Next: Example run of YACC Up: CS2121: The Implementation and Previous: A small example -

# Example run of LEX calculator

Example run of LEX calculator

The example will recognise the input line: 12 3 +14 2-*;newline
^ indicates where we are on the line, and newline means the single character often represented by `\`n.

```^12 3 +14 2-*;newline
stack= (empty)

12^ 3 +14 2-*;newline
rule= [0-9]+
stack= 12

12 ^3 +14 2-*;newline
rule= [ \t\n]
stack= 12
```

although the space is discarded, it is essential to separate the two numbers, otherwise they would be read as one long number 123

```12 3^ +14 2-*;newline
rule= [0-9]+
stack= 12 3

12 3 ^+14 2-*;newline
rule= [ \t\n]
stack= 12 3
```

this space is not essential to separate 3 and + as they are not recognised by the same pattern in the example calculator

```12 3 +^14 2-*;newline
rule= "+"
stack= 15

12 3 +14^ 2-*;newline
rule= [0-9]+
stack= 15 14

12 3 +14 ^2-*;newline
rule= [ \t\n]
stack= 15 14

12 3 +14 2^-*;newline
rule= [0-9]+
stack= 15 14 2

12 3 +14 2-^*;newline
rule= -
stack= 15 12

12 3 +14 2-*^;newline
rule= "*"
stack= 180

12 3 +14 2-*;^newline
rule= ;
stack= (empty)
print "180\n"

12 3 +14 2-*;newline^
rule= [ \t\n]
stack= (empty)
```

Pete Jinks
2004-10-26