Thursday, December 5, 2013

ParseGen - parser generator for FPC

ParseGen is rule driven, parser generator for FPC / Lazarus. ParseGen is design using FPC, FCL and Lazarus and it mainly supports for Windows and Linux operating systems.

ParserGen scanner is slight DFA (deterministic finite automaton) state machine. This scanner can operate on case sensitive or case-insensitive modes and it can easily configure/extend through given class structure. The parser of the ParseGen is recursive descent parser. ParseGen generate this parser using high-level source language and this language is logically similar to EBNF grammar. For example, in ParseGen, definition for "term" and "expression" can be written like this:

define: expression

  optional: "-","+"
  end       

  term       
  loop: "-","+"
    term
  end
 

end

define: term

  factor
  loop: "*","/"
    factor
  end
 
end

This parser generator is mainly design for  FPC / Lazarus, but it can use with Delphi with some minor changes. ParseGen is an open source software project and it is based on GNU General Public License version 3.

Most of the sample scripts and demo applications of this project are based on Niklaus Writh's Algorithms + Data Structures = Programs book and PL/0 programming language. In demo project we implement Writh's PL/0 parser using ParseGen and it is available in main project bundle.

ParseGen is available to download at github.com/dilshan/parsegen and documentation for source language is available in here.
Post a Comment