Difference between revisions of "Lex Tutorial"
Jump to navigation
Jump to search
Line 11: | Line 11: | ||
[[File:Lex.png|center| Running Lex Programs ]] | [[File:Lex.png|center| Running Lex Programs ]] | ||
− | + | ==The Lex Format== | |
A Lex program is separated into three sections by '''%%''' delimiters. The format of Lex source is as follows: <br><br> | A Lex program is separated into three sections by '''%%''' delimiters. The format of Lex source is as follows: <br><br> | ||
'''{ definitions }''' <br> | '''{ definitions }''' <br> | ||
Line 19: | Line 19: | ||
'''{ user subroutines }''' | '''{ user subroutines }''' | ||
− | * '''Definitions''' include declarations of '''constant''', '''variable''' and '''regular definitions'''. | + | <br><br> |
+ | * '''Definitions''' include declarations of '''constant''', '''variable''' and '''regular definitions'''. | ||
* '''Rules''' define the statement of form '''p1''' {action1} '''p2''' {action2}....'''pn''' {action}. Where '''pi''' describes the regular expression and action1 describes the actions '''what action the lexical analyzer should take when pattern pi matches a lexeme.''' | * '''Rules''' define the statement of form '''p1''' {action1} '''p2''' {action2}....'''pn''' {action}. Where '''pi''' describes the regular expression and action1 describes the actions '''what action the lexical analyzer should take when pattern pi matches a lexeme.''' | ||
* '''User subroutines''' are auxiliary procedures needed by the actions. The subroutine can be loaded with the lexical analyzer and compiled separately. | * '''User subroutines''' are auxiliary procedures needed by the actions. The subroutine can be loaded with the lexical analyzer and compiled separately. |
Revision as of 01:15, 10 August 2020
Lex
- Lex is a program that generates lexical analyzer. It is used with YACC parser generator.
- The lexical analyzer is a program that transforms an input stream into a sequence of tokens.
- It reads the input stream and produces the source code as output through implementing the lexical analyzer in the C program.
The function of Lex is as follows:
- Firstly lexical analyzer creates a program lex.1 in the Lex language. Then Lex compiler runs the lex.1 program and produces a C program lex.yy.c.
- Finally C compiler runs the lex.yy.c program and produces an object program a.out.
- a.out is lexical analyzer that transforms an input stream into a sequence of tokens.
The Lex Format
A Lex program is separated into three sections by %% delimiters. The format of Lex source is as follows:
{ definitions }
%%
{ rules }
%%
{ user subroutines }
- Definitions include declarations of constant, variable and regular definitions.
- Rules define the statement of form p1 {action1} p2 {action2}....pn {action}. Where pi describes the regular expression and action1 describes the actions what action the lexical analyzer should take when pattern pi matches a lexeme.
- User subroutines are auxiliary procedures needed by the actions. The subroutine can be loaded with the lexical analyzer and compiled separately.