Parser: Difference between revisions

From The Toaq Wiki
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.

Revision as of 17:29, 17 February 2023

Toaq's grammar can be parsed by humans and computers alike. A piece of software that turns Toaq text into a syntax tree is called a parser.

Grammar formats

It's popular to write parsers in PEG format. In practice, PEG parser generators disagree on the specifics of the .peg 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 context-free languages, which Toaq is not. See their blog post Logical Language Misconceptions for more information.

Parsers

There is currently no parser for Toaq text, mostly because we set the bar very high for what counts as a parser. Kuna is a WIP parser for Toaq Delta.

Outdated parsers can be found for Toaq Gamma here, and for Toaq Beta here and here. Hoemaı wrote an early version of Toaq grammar in Prolog.