js実装のSolidity parser ~~https://github.com/ConsenSysMesh/solidity-parser~~ PEG.jsというJavaScript用Parser Generatorが使われてるっぽい ~~https://pegjs.org/documentation~~ solhintとかで使われてるのはこっちだった ANTLR(アントラー)という構文解析ツールが使われているっぽい
LL Planets の「メタプログラミングの光と闇」で Haskell について話してきました。Perl、Python、Ruby が概ね内部 DSL を作る話だったのに対し、Haskell では外部DSLを内部に埋め込むという話をしました。短い時間で説明不足になった感があるので、この記事で二点ほど補足します。 Haskell では文法がうまく設計されており、コードを書けば自然とDSLっぽくなるので、わざわざ内部DSLなんて言わない。それよりもコンビネータという考え方を学ぶ方が新しい視野がひらけてよい。 Haskell ではパーサーを作るのが簡単。だから自分で言語を作るのも簡単。その言語を外部ファイルから読み込んでもいいし、HERE DOCUMENT のように内部に貼付けることもできる。 関数を二項演算子として扱う Haskell では関数をバッククォートで囲むと二項演算子になります。 i
$ htmlq -h htmlq 0.4.0 Michael Maclean <michael@mgdm.net> Runs CSS selectors on HTML USAGE: htmlq [FLAGS] [OPTIONS] [--] [selector]... FLAGS: -B, --detect-base Try to detect the base URL from the <base> tag in the document. If not found, default to the value of --base, if supplied -h, --help Prints help information -w, --ignore-whitespace When printing text nodes, ignore those that consist entirel
Some years ago someone asked whether it would make sense to switch Python to a PEG parser. (Or a PEG grammar; I don’t recall exactly what was said by whom, or when.) I looked into it a bit and wasn’t sure what to think, so I dropped the subject. Recently I’ve learned more about PEG (Parsing Expression Grammars), and I now think it’s an interesting alternative to the home-grown parser generator tha
jqはとても便利なコマンドです。 JSONを返すAPIを実装するときや、SaaSのAPIから特定の情報を抜き出してシェル変数に代入するときなど、web開発や運用には欠かせないツールとなっています。 しかし、私にとってjqのクエリを一発で書くのは容易ではなく、思い通りの出力が得られないことがよくありました。 難しいエラーメッセージに悩まされて、jqで書くのを諦めて別の言語で書き直すこともありました。 jqの十八番と思える場面で使いこなせないのは、なかなか悔しいものがあります。 ツールを使うのが難しいなら、同じものを作ってしまえばよいのです。 jqの全ての機能を実装する jqを言語としてきちんと書けるようになる jqを完全に理解する jqの全ての機能を自分で実装してしまえば、jqがどういうものか、クエリがどのように処理されるのか、詳しくなれるはずです。 jqを得意な言語と言えるようになって、ク
はじめに 先日、エンジニアの能力と今どきの難しさというタイトルの記事(2018年)を読んで、「これはほんとにその通り」と思う一方で、具体例がないためにピンと来ない人や、マウント取りではという意見も多数見られた。というわけで、自分が比較的得意な、プログラミング言語の構文解析といった分野に関して、この記事の言わんとしていることを補足するような記事を書こうと思い至った。 記事中では、エンジニアに必要な知識や経験を、「ベース」「カテゴリ」「実行環境」という形(以下)に分けて論じている。 ①ベース コンピュータサイエンス(CS)などの理論的なもの 低レイヤー ②カテゴリ フロントエンド / バックエンド / クライアントアプリなど ③実行環境 特定のプログラミング言語や開発環境やツール、フレームワークやライブラリなど この中で、特に印象的であり、かつ「よくわかる」と思ったのは以下の記述だ。 ③は比較
univocity-parsers is a collection of extremely fast and reliable parsers for Java. It provides a consistent interface for handling different file formats, and a solid framework for the development of new parsers. We have finally updated the tutorial, please go to our website: https://www.univocity.com/pages/parsers-tutorial Bugs, contributions & support If you find a bug, please report it on githu
If you are on Java 21+, prefer using Google Mug Dot Parse — a re-imagined parser combinator library: The API uses static type to completely eliminate infinite loops or accidental left recursions caused by zero-consumption parser — traditionally painful to debug in current jparsec or similar combinator or PEG libraries. It supports lazy, streaming parsing through the parseToStream() and probe() met
せっかくの SphinxCon ですが、体調不良で欠場してる— Takeshi KOMIYA (@tk0miya) 2017年11月28日 38度の熱が出たので、楽しみにしていた SphinxCon JP 2017 を休むことになってしまいました。 おかげで、Sphinx の魔改造の話や HTML テンプレートへの提案など、興味深い発表を聞きそびれてしまったのは非常に残念です。 資料は公開されているので、それぞれ噛み締めながら何度か読み返そうと思っています。 さて、今回の SphinxCon では僕はトーク枠を持っていなかったのですが、実はイベントに合わせて作っていたものがあります。 LT でお披露目しようかと思っていたのですが、間に合わなかった上に風邪でダウンしてしまったので、代わりにここで紹介しようと思います。 作ったのは pycmark というパッケージです。 github.com
A library to construct top-down recursive backtracking parsers using parser-combinators. Before proceeding you might want to take at peep at theory of parser combinators. As for this package, it provides: A standard set of combinators. Regular expression based simple-scanner. Standard set of tokenizers based on the simple-scanner. To construct syntax-trees based on detailed grammar try with AST st
Parsing Expression Grammar(PEG)は、Bryan FordによってPOPL 2004で発表された文法の形式化です。PEGはRecognition(認識)をベースとしており、Context Free Grammar(CFG)と異なっています。 PEGは曖昧でない言語を受理するのに便利な特性を持っており、PEGをベースにした構文解析器生成系が多数登場しています。また、PEGはパーザコンビネータと呼ばれる、プログラミング言語内に構文解析用DSLを埋め込む手法とも関連があります。 この勉強会では、 PEGの基本 PEGの応用例(構文解析器生成系、パーザコンビネータなど) PEGの拡張 等について勉強します(PEGに関する予備知識はなくて済むようにするつもりです)。また、 PEG以外の構文解析手法 LL法 LR法 LL(*)法 (ANTLR) GLR法 GLL法 PEG以
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く