Actually, I'd like to create Compiler-Compiler, lexical scanner GENERATOR and parser generator.
Sorry for confusion... 2014年9月7日日曜日 1時17分58秒 UTC+9 Takeshi Kimura: > > Thank you for your introduce of ragel fork. > > It seemed that actions along with lexical rules are written in OCaml, Go, > and C (not in Julia). > > So it is useful for DSL related works, but slightly far from I imagined. > > the ragel manipulates DFA, so I should write DFA based lexical scanner > (fast but limited regex). > > May be flex(1) code helps me a lot. > > I know that I should study deeper for lexical scanner written in Dragon > Book, > > so, I will study several topics, and will decide where I'd like to go > (=design of target implementation). > > Thank you again. > > Takeshi KIMURA > > > > 2014年9月7日日曜日 0時49分28秒 UTC+9 Daniel Jones: >> >> >> If you're interested, I have a ragel fork >> <https://github.com/dcjones/ragel> that let's one generate scanners and >> parsers for regular languages. We've been using it to generate parsers as >> part of the BioJulia project. >> >> It's generally as fast or faster than PCRE and let's you insert arbitrary >> code in the DFA, like the PCRE callout feature but much more flexible. >> >> >> On Saturday, September 6, 2014 8:35:21 AM UTC-7, Takeshi Kimura wrote: >>> >>> Hi there, >>> >>> I'd like to create old Lex/Yacc like lexical scanner and parser (may be >>> LL(1) or LALR(1)) by implementing Julia Module(s). >>> >>> The goal is too far, but I'd like to start to write lexical scanner at >>> first. >>> >>> The lexical scanner is related to Regular Expression objects (NFA(Perl >>> compatible), or DFA (not compatible)). >>> >>> So, I'd like to use PCRE(3) as its use. May be call out facilities will >>> help me a lot. >>> >>> But call out facilities only handle 256 call-outs, so we need extend >>> call out by sequentially callouts (callout 0x01, callout 0x01 = callout >>> 257, etc.) >>> >>> Have you any ideas for this type of lexical scanners? >>> >>> If we can not use PCRE(3), may be the flex(1) internal APIs should be >>> called. >>> >>> >>> Takeshi KIMURA >>> >>
