aycock man page on OpenSuSE

Man page or keyword search:  
man Server   25941 pages
apropos Keyword Search (all sections)
Output format
OpenSuSE logo
[printable version]

aycock(n)	Aycock-Horspool-Earley parser generator for Tcl	     aycock(n)

______________________________________________________________________________

NAME
       aycock - Aycock-Horspool-Earley parser generator for Tcl

SYNOPSIS
       package require Tcl  8.5

       package require grammar::aycock	?1.0?

       ::aycock::parser grammar ?-verbose?

       parserName parse symList valList ?clientData?

       parserName destroy

       parserName terminals

       parserName nonterminals

       parserName save

_________________________________________________________________

DESCRIPTION
       The grammar::aycock package implements a parser generator for the class
       of parsers described in John Aycock and R.  Nigel  Horspool.  Practical
       Earley	Parsing.    The	  Computer   Journal,	45(6):620-630,	 2002.
       http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.12.4254

PROCEDURES
       The grammar::aycock package exports the single procedure:

       ::aycock::parser grammar ?-verbose?
	      Generates a parser for the given grammar, and returns its	 name.
	      If  the  optional -verbose flag is given, dumps verbose informa‐
	      tion relating to the generated parser to	the  standard  output.
	      The  returned parser is an object that accepts commands as shown
	      in OBJECT COMMAND below.

OBJECT COMMAND
       parserName parse symList valList ?clientData?
	      Invokes a parser returned from ::aycock::parser.	symList	 is  a
	      list  of	grammar symbols representing the terminals in an input
	      string, and valList is a list  of	 their	semantic  values.  The
	      result is the semantic value of the entire string when parsed.

       parserName destroy
	      Destroys a parser constructed by ::aycock::parser.

       parserName terminals
	      Returns  a list of terminal symbols that may be presented in the
	      symList argument to the parse object command.

       parserName nonterminals
	      Returns a list of nonterminal symbols that were defined  in  the
	      parser's grammar.

       parserName save
	      Returns  a  Tcl  script that will reconstruct the parser without
	      needing all the mechanism of the parser generator at  run	 time.
	      The  reconstructed  parser  depends  on a set of commands in the
	      package grammar::aycock::runtime, which  is  also	 automatically
	      loaded when the grammar::aycock package is loaded.

DESCRIPTION
       The  grammar::aycock::parser  command  accepts a grammar expressed as a
       Tcl list.  The list must be structured as the concatenation of a set of
       rules. Each rule comprises a variable number of elements in the list:

       ·      The name of the nonterminal symbol that the rule reduces.

       ·      The literal string, ::=

       ·      Zero  or more names of terminal or nonterminal symbols that com‐
	      prise the right-hand-side of the rule.

       ·      Finally, a Tcl script to	execute	 when  the  rule  is  reduced.
	      Within  the given script, a variable called _ contains a list of
	      the semantic values of the symbols on the right-hand  side.  The
	      value  returned  by  the	script	is expected to be the semantic
	      value of the left-hand side.  If the  clientData	parameter  was
	      passed to the parse method, it is available in a variable called
	      clientData.  It is permissible for the script to	be  the	 empty
	      string.	In  this  case, the semantic value of the rule will be
	      the same as the semantic value of the first symbol on the right-
	      hand  side.   If the right-hand side is also empty, the semantic
	      value will be the empty string.

       Parsing is done with an Earley parser, which is not terribly  efficient
       in  speed  or  memory  consumption,  but	 which	deals effectively with
       ambiguous grammars.  For this reason, the  grammar::aycock  package  is
       perhaps	best  adapted to natural-language processing or the parsing of
       extraordinarily complex languages in which ambiguity can be tolerated.

EXAMPLE
       The following code demonstrates a trivial  desk	calculator,  admitting
       only  +,	 * and parentheses as its operators.  It also shows the format
       in which the lexical analyzer is expected to present  terminal  symbols
       to the parser.
	      set p [aycock::parser {
	      start ::= E {}
	      E ::= E + T {expr {[lindex $_ 0] + [lindex $_ 2]}}
	      E ::= T {}
	      T ::= T * F {expr {[lindex $_ 0] * [lindex $_ 2]}}
	      T ::= F {}
	      F ::= NUMBER {}
	      F ::= ( E ) {lindex $_ 1}
	      }]
	      puts [$p parse {(	 NUMBER +  NUMBER )  *	( NUMBER +  NUMBER ) }	{{} 2	   {} 3	     {} {} {} 7	    {} 1      {}}]
	      $p destroy
       The example, when run, prints 40.

KEYWORDS
       Aycock, Earley, Horspool, parser, compiler

KEYWORDS
       ambiguous,  aycock,  earley, grammar, horspool, parser, parsing, trans‐
       ducer

CATEGORY
       Grammars and finite automata

COPYRIGHT
       Copyright (c) 2006 by Kevin B. Kenny <kennykb@acm.org>
       Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>

grammar_aycock			      1.0			     aycock(n)
[top]

List of man pages available for OpenSuSE

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net