1[comment {-*- tcl -*- doctools manpage}] 2[manpage_begin grammar::me_intro n 0.1] 3[copyright {2005 Andreas Kupries <andreas_kupries@users.sourceforge.net>}] 4[moddesc {Grammar operations and usage}] 5[titledesc {Introduction to virtual machines for parsing token streams}] 6[category {Grammars and finite automata}] 7[description] 8[keywords {virtual machine}] 9[keywords {push down automaton}] 10[keywords matching parsing transducer grammar expression] 11[keywords {context-free languages} CFL {context-free grammar} CFG] 12[keywords {top-down parsing languages} TPDL {parsing expression grammar} PEG] 13[keywords {recursive descent} LL(k)] 14 15This document is an introduction to and overview of the basic 16facilities for the parsing and/or matching of [term token] 17streams. One possibility often used for the token domain are 18characters. 19 20[para] 21 22The packages themselves all provide variants of one 23 24[term {virtual machine}], called a [term {match engine}] (short 25 26[term ME]), which has all the facilities needed for the matching and 27parsing of a stream, and which are either controlled directly, or are 28customized with a match program. The virtual machine is basically a 29pushdown automaton, with additional elements for backtracking and/or 30handling of semantic data and construction of abstract syntax trees 31([term AST]). 32 33[para] 34 35Because of the high degree of similarity in the actual implementations 36of the aforementioned virtual machine and the data structures they 37receive and generate these common parts are specified in a separate 38document which will be referenced by the documentation for packages 39actually implementing it. 40 41[para] 42 43The relevant documents are: 44 45[para] 46[list_begin definitions] 47 48[def [package grammar::me_vm]] 49 50Virtual machine specification. 51 52[def [package grammar::me_ast]] 53 54Specification of various representations used for abstract syntax 55trees. 56 57[def [package grammar::me::util]] 58 59Utility commands. 60 61[def [package grammar::me::tcl]] 62 63Singleton ME virtual machine implementation tied to Tcl for control 64flow and stacks. Hardwired for pull operation. Uninteruptible during 65processing. 66 67[def [package grammar::me::cpu]] 68 69Object-based ME virtual machine implementation with explicit control 70flow, and stacks, using bytecodes. Suspend/Resumable. Push/pull 71operation. 72 73[def [package grammar::me::cpu::core]] 74 75Core functionality for state manipulation and stepping used in the 76bytecode based implementation of ME virtual machines. 77 78[list_end] 79[para] 80 81[section {BUGS, IDEAS, FEEDBACK}] 82 83This document, and the package it describes, will undoubtedly contain 84bugs and other problems. 85 86Please report such in the category [emph grammar_me] of the 87[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}]. 88 89Please also report any ideas for enhancements you may have for either 90package and/or documentation. 91 92 93[manpage_end] 94