Recommend this page to a friend! |
Download .zip |
Info | View files (6) | Download .zip | Reputation | Support forum | Blog | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2006-01-31 (10 years ago) | Not enough user ratings | Total: 695 This week: 1 | All time: 4,513 This week: 1,047 |
Version | License | Categories | ||||
fsmparser 1.0.0 | Freely Distributable | Text processing |
Description | Author | ||||||||||||||
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() ). |
Files |
File | Role | Description |
---|---|---|
example.xml | Data | Example XML file for parser testing |
fsmparserclass.inc.php | Class | Class source |
README | Doc. | Some documentation |
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 | |||||||||||||||
0% |
|
|