著者
篠埜 功 大堀 淳
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.29, no.2, pp.2_193-2_203, 2012-04-25 (Released:2012-05-20)

SML#はCとの高い相互運用性を持っており,インポート構文により,Cの関数をSML#から整数型などを変換することなく呼び出すことができる.本論文では,SML#プログラム中にCプログラムを直接書けるようにSML#言語の拡張を行う.Cプログラムの埋め込み用の特別な構文をSML#の宣言部分に追加し,その構文内にCプログラムを埋め込めるようにする.この拡張により,Cのプログラムを,トップレベルのみでなく,let式の宣言部分,structure,functor,local宣言等の宣言部分に書くことができるようになる.さらに,埋め込まれたCからSML#プログラム中の変数の値を参照する機能を追加する.
著者
今泉 良紀 篠埜 功
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.11, no.3, pp.24, 2018-09-20

PEG(Parsing Expression Grammar,解析表現文法)は文法規則に曖昧さのない形式文法であり,プログラミング言語の構文記述に有用である.PEGによる文法は再帰下降構文解析器と対応しているため,パーサコンビネータによる簡易な実装によってPEGの文法から実際に動作するパーサが得られる.特にEDSL(Embedded Domain Specific Language)によるパーサコンビネータ実装は,パーサの記述のし易さを確保しつつ,意味規則の記述などの点でホスト言語との接続が簡潔であるという利点がある.また,バックトラックのある再帰下降構文解析器は素朴な実装では入力長に対して最悪指数関数時間を要するが,再帰下降構文解析にメモ化を組み合わせたパックラット構文解析という手法によって入力長に対して線形時間で解析が可能となる.本発表では,C++で記述されたPEGに基づくパーサコンビネータ実装として,Boost.Spirit.X3,cpp-peglib,PEGTL,matcha2の4つの実装の実行性能について比較した結果と,これらの中で最も実行速度の速いmatcha2の実装の詳細について報告する.
著者
座間 翔 篠埜 功
雑誌
研究報告ゲーム情報学(GI) (ISSN:21888736)
巻号頁・発行日
vol.2017-GI-37, no.7, pp.1-12, 2017-02-28

問題集などに掲載される数独の問題は,初期配置の数字が図や模様を描くように配置されているものがある.本研究ではそのような視覚的なデザインを考慮した問題制作を支援するため,初期配置の位置を問題制作者に指定させ,それに従って問題を自動生成する手法を提案する.この手法では,指定されたマスへの数字配置と配置した数字の変更によって問題を生成する.その際,マスに入る数字の可能性を絞り込むような数字配置手法や,解探索で解の求まらないマスを減らす数字変更基準を設け,唯一解を持つ問題生成の成功率を高める.また,唯一解の探索は人間が通常用いる解法を実装した解探索アルゴリズムにより行う.さらに,制作者による問題の難易度設定の補助として,より難易度の高い問題を自動生成する手法を考案し,実装した.
著者
諏訪 重貴 福田 浩章 篠埜 功
雑誌
第80回全国大会講演論文集
巻号頁・発行日
vol.2018, no.1, pp.255-256, 2018-03-13

ウェブアプリケーションのようなソフトウェア開発においては,非同期プログラミングを用いた並列実行が必須である.callback,thread,promise,future,async/awaitなどのモデルを用いたコードは,同期処理よりも複雑であり,その性質の差異を考慮してコードを記述する必要がある.この差異を考慮することなく,非同期処理を同期処理と同様に記述できるようにすることで,保守性や可読性を向上させ,致命的なバグを抑制できると考えられる.これを実現するため,本研究ではLiquidという計算体系を提案し,操作的意味論を定義した.
著者
矢ノ口 裕貴 篠埜 功
雑誌
第80回全国大会講演論文集
巻号頁・発行日
vol.2018, no.1, pp.59-60, 2018-03-13

麻雀において、他のプレイヤーの上がりとなる牌を捨てないことで失点を抑えることは重要な戦略となる。本論文では、捨てようとしている牌の危険度推定を目的として、牌譜においてあるプレイヤーが他のプレイヤーに振り込んだ局面から評価要素を抽出し、3層ニューラルネットワークの教師あり学習による評価関数のパラメータの調整を行った。危険度とは手牌の特定の牌が他のプレイヤーの上がりとなる牌である可能性を表すものとする。また、ニューラルネットワークの過学習の影響を調べるために、学習率を変化させて学習した結果を比較した。本方式の評価として、牌譜内で指された手とニューラルネットワークが提示する手との一致率を比較した。
著者
今泉 良紀 篠埜 功
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.10, no.6, pp.1, 2017-12-12

パックラット構文解析ではLALR(1)よりも強力な形式文法であるParsing Expression Grammar(以下PEG)によって構文解析を行う.PEGによる文法規則には曖昧さがなく,プログラミング言語の構文の記述やその処理系の作成に際し非常に有用である.既存のPEGベースの構文解析器では直接文字列を入力として受け付けるが,字句解析と構文解析を分けたい場合にそのままでは使用に適さない.たとえば,字句ベースのマクロ処理系であるCプリプロセッサを実装する際,マクロ展開後のコードに再度マクロ展開の処理が行われうる.その結果,マクロ展開の過程で同じレクシムに対して字句解析を複数回実行する場合がある.これを避けるためにPEGベースの構文解析器を使用しないとすると,字句解析や構文解析用にPEG以外の形式文法を学んだりその処理系を導入したりする必要がある.そこで文字列だけでなく字句列などを入力できるパックラットパーサーコンビネータをC++で実装し,本発表では実装の詳細について報告する.この実装を用いて生成した構文解析器はchar型だけでなく任意の型を返す前方反復子(Forward Iterator)を入力として受け付ける.結果はtuple・variant・optional・expectedなどを組み合わせたデータ構造として得られ,意味規則によって自由に変換することが可能である.