consists of 2 main files
- lex file for lexical analyzer
- bison/yacc file for parsing
*others can be created with 2 files above
this was a univ. assignment for Programming Languages Course at Chung-Ang Univ., Seoul
copyright of the assignment to prof. Kim Mu Cheol, CAU
.
- Lexical Structure.
Token ::= ID | int | float | Keyword | Operator | Delimiter ID ::= Letter (Letter | Digit)* Letter ::= a | ... | z | A | ... | Z Digit ::= 0 | ... | 9
Integer ::= Digit+ Float ::= *** You need to define this *** Keyword ::= mainprog | function | procedure | begin | end | if | then | else | nop | while |
return | print | in Operator ::= + | - | * | / | < | <= | >= | > | == | != | !
Delimiter ::= ; | . | , | = | ( | ) | [ | ] | :
Whitespace ::= | | | Comment
3. Grammar
::= "mainprog" id ";"
::= ";" | epsilon
::= id | id ","
= | "[" num "]"
::= "int" | "float“
::= | epsilon
::=
::= "function" id ":" ";" | "procedure" id ";“
::= "(" ")" | epsilon
::= ":" | ":" ";"
::= "begin" "end"
::= | ";"
::= "=" | | | | | | | "return" | "nop“ ::= “if” “:” (“elif” “:” )* [“else” “:” ]
::= “while” “:” [“else” “:” ]
::= “for” “in” “:” [“else” “:” ]
::= "print" | "print" "(" ")"
::= id | id "[" "]"
::= id "(" ")"
::= epsilon |
::= | expression ","
::= |
::= |
/* NOTE THE ABOVE GRAMMAR HAS BEEN CHANGED */
::= |
:: = Integer | Float | | | "!" |
/* NOTE THE ABOVE GRAMMAR HAS BEEN CHANGED */
::= "+" | "-"
::= ">" | ">=" | "<" | "<=" | "==" | "!=" | “in”
::= "+" | "-"
::= "*" | "/"