|Last Updated||Ratings||Unique User Downloads||Download Rankings|
|2006-01-31 (11 years ago)||Not enough user ratings||Total: 696||All time: 4,530 This week: 779|
|fsmparser 1.0.0||Freely Distributable||Text processing|
This class can be used to parse or preprocess any markup or programming language using a finite state machine.
FSM Parser ========== What is it? ~~~~~~~~~~~ A PHP class for creating parsers and preprocessors using Finite State Machine. How to use? ~~~~~~~~~~~ First, include the class file. Then you must define language constructs (as regular expressions), actions to take when each of them are found, and optional machine states: the default target state (can be changed inside action; can be NULL if no change) and required state (NULL if no state check is needed). Example: xmlparser.php - a very simple XML parser. It is also possible to load FSM definition from file or another source using LoadFSM() and LoadFSMFile() methods. Example: xmlparser_loadfsm.php - the same XML parser loaded from .fsm file. FSM definition syntax. ~~~~~~~~~~~~~~~~~~~~~~ It is just like Makefile syntax: Line beginning with "#" is a comment. Empty line is an end of state definiton (it is required even at EOF). Line starting with an alphanumeric symbol is a state definition: <Required state or *> <regular expression> [Default state] Any following line starting with tab character is an action string. Method description. ~~~~~~~~~~~~~~~~~~~ void FSM( string Expect, string Do [, string Target [, string Require] ] ) Add a state definition. Expect: regex to match closest to current position. Do: PHP code to execute on best match. Inside this code, $STRING is that portion of parsed text that matches "Expect", $STATE is current state. Target: state to take if "Do" code did not specify it explicitly. Require: search for "Expect" only if macine is in this state. "Do" code may return: string: state to take. array("STOP"=> stop ,"NEWSTATE"=> state): if "stop" is nonzero, the FSM will stop with FSMSTOP_STOP return code. if "state" is nonempty string, the machine will take this state. void LoadFSM( string data ) Load state definitions from string in syntax described above. void LoadFSMFile( string filename ) Load state definitions from specified file (wrapper for LoadFSM() ). int Parse( string data , string StartState) Runs a FSM on specified data. Return codes: FSMSTOP_OK Stopped at data end. FSMSTOP_STOP Stopped by action handler. FSMSTOP_UNHANDLED No matches found. int ParseFile( string filename , string StartState ) Runs a FSM on specified file (wrapper for Parse() ).
|example.xml||Data||Example XML file for parser testing|
|xmlparser.php||Example||Simple XML parser based on this class|
|xmlparser_loadfsm.fsm||Data||FSM program for XML parser|
|xmlparser_loadfsm.php||Example||XML parser with external FSM program|
|Version Control||Unique User Downloads||Download Rankings|