ArithExpr Grammar
Categories
Rules
Categories
"("
")"
"*"
"+"
"-"
"/"
<<Expr-CF>>
<<Factor-CF>>
<<LAYOUT-CF>>
( ->
<<LAYOUT-LEX>>
( ->
<<[ ]+-LEX>>
)
)
<<LAYOUT-LEX>>
( ->
<<[ ]+-LEX>>
)
<<LAYOUT?-CF>>
<<Number-CF>>
( ->
<<Number-LEX>>
( ->
<<[0-9]+-LEX>>
)
)
<<Number-LEX>>
( ->
<<[0-9]+-LEX>>
)
<<START>>
<<Term-CF>>
<<[ ]+-LEX>>
<<[0-9]+-LEX>>
string([ ])
string([0-9])
Rules
Start rule:
<<START>>
->
<<LAYOUT?-CF>>
<<Expr-CF>>
<<LAYOUT?-CF>>
<<Expr-CF>>
->
<<Expr-CF>>
<<LAYOUT?-CF>>
"+"
<<LAYOUT?-CF>>
<<Term-CF>>
<<Expr-CF>>
->
<<Expr-CF>>
<<LAYOUT?-CF>>
"-"
<<LAYOUT?-CF>>
<<Term-CF>>
<<Expr-CF>>
->
<<Term-CF>>
<<Factor-CF>>
-> "("
<<LAYOUT?-CF>>
<<Expr-CF>>
<<LAYOUT?-CF>>
")"
<<Factor-CF>>
->
<<Number-CF>>
( ->
<<Number-LEX>>
( ->
<<[0-9]+-LEX>>
)
)
<<LAYOUT-CF>>
->
<<LAYOUT-LEX>>
( ->
<<[ ]+-LEX>>
)
<<LAYOUT-LEX>>
->
<<[ ]+-LEX>>
<<LAYOUT?-CF>>
->
<<LAYOUT?-CF>>
->
<<LAYOUT-CF>>
( ->
<<LAYOUT-LEX>>
( ->
<<[ ]+-LEX>>
)
)
<<Number-CF>>
->
<<Number-LEX>>
( ->
<<[0-9]+-LEX>>
)
<<Number-LEX>>
->
<<[0-9]+-LEX>>
<<START>>
->
<<LAYOUT?-CF>>
<<Expr-CF>>
<<LAYOUT?-CF>>
<<Term-CF>>
->
<<Factor-CF>>
<<Term-CF>>
->
<<Term-CF>>
<<LAYOUT?-CF>>
"*"
<<LAYOUT?-CF>>
<<Factor-CF>>
<<Term-CF>>
->
<<Term-CF>>
<<LAYOUT?-CF>>
"/"
<<LAYOUT?-CF>>
<<Factor-CF>>
<<[ ]+-LEX>>
->
<<[ ]+-LEX>>
string([ ])
<<[ ]+-LEX>>
-> string([ ])
<<[0-9]+-LEX>>
->
<<[0-9]+-LEX>>
string([0-9])
<<[0-9]+-LEX>>
-> string([0-9])