Parser: Difference between revisions

467 bytes removed ,  17:29, 17 February 2023
Delta
No edit summary
(Delta)
Line 4: Line 4:
It's popular to write parsers in [https://en.wikipedia.org/wiki/Parsing_expression_grammar PEG] format. In practice, PEG parser generators disagree on the specifics of the <code>.peg</code> format, meaning a PEG grammar tends to be tied to a specific implementation (say, PEGjs).
It's popular to write parsers in [https://en.wikipedia.org/wiki/Parsing_expression_grammar PEG] format. In practice, PEG parser generators disagree on the specifics of the <code>.peg</code> format, meaning a PEG grammar tends to be tied to a specific implementation (say, PEGjs).


[[Hoemaı]] thinks PEG is not a good fit for Toaq. In fact, PEG can only describe [https://en.wikipedia.org/wiki/Context-free_language context-free languages], which Toaq is not.<sup>[why?]</sup> Hoemaı wrote an [http://selpahi.de/toaq.txt early version of Toaq grammar in Prolog].
[[Hoemaı]] thinks PEG is not a good fit for Toaq. In fact, PEG can only describe [https://en.wikipedia.org/wiki/Context-free_language context-free languages], which Toaq is not. See their blog post [https://toaqlanguage.wordpress.com/2022/09/26/logical-language-misconceptions/ ''Logical Language Misconceptions''] for more information.


== Parsers ==
== Parsers ==
=== Toaq-dev parser ===
There is currently no parser for Toaq text, mostly because we set the bar very high for what counts as a parser. [https://github.com/toaq/kuna Kuna] is a WIP parser for Toaq Delta.
The most actively developed parser lives [https://toaq-dev.github.io/toaq.org/parser/ here]. It draws a syntax tree for some given [[Toaq Gamma]] text. This parser is a community fork of the official one written by Hoemaı for [[Toaq Beta]].


You can provide input in Unicode or using [[Input_methods#ASCII_tone_markers|ASCII tone markers]].
Outdated parsers can be found for Toaq Gamma [[zugai|here]], and for Toaq Beta [https://toaq-dev.github.io/toaq.org/parser/ here] and [[Mıu|here]]. Hoemaı wrote an [http://selpahi.de/toaq.txt early version of Toaq grammar in Prolog].
 
The grammar is defined using [https://pegjs.org/ PEGjs]. The source code is [https://github.com/toaq-dev/toaq.org/tree/main/parser here]. The PEG grammar file is <code>toaqlanguage.js.peg</code>.
 
=== Mıu parser ===
[[Mıu]] is a tool by eaburns/Lỏq that parses [[Toaq Beta]] text and even turns it into logical notation. You can try it [http://toaq.herokuapp.com/ here].
 
The grammar (.peg file [https://github.com/eaburns/toaq/blob/master/ast/toaq.peg here]) is defined in an extension of PEG, called [https://github.com/eaburns/peggy peggy], developed by its author.