C language compiler implementation
- Variable type → ( int | char | bool | float )
- Signed integer → ( 0 | (- | e)(1 - 9)(0 - 9)*)
- Literal string → (")( letter | (0 - 9) | blank)*(")
- Boolean string → ( true | false )
- Floating-point number → ( - | Ɛ )( 0 | ( 1 – 9 )( 0 – 9 ))( . )(0 | ( 0 – 9 )( 1 – 9 )) - Identifier → ( _ | letter )( _ | letter | ( 0 – 9 ) )*
- Keyword → ( if | else | while | for | return )
- Arithmetic operator → ( + | - | * | / )
- Bitwise operator → ( << | >> | & | | )
- Assignment operator → ( = )
- Comparison operator → ( < | > | == | != | <= | >= )
- Terminating symbol → ( ; )
- Block → ( { | } )
- Paren → ( ( | ) )
- Separating symbol → ( , )
- Whitespaces → ( \n | \t | blank )
Tech Stack : java
compiler 의 exception 관련 Class 들을 모아놓은 packcage 이다.
- LexicalException Class : lexical analyzer 의 exception 을 담당하는 class 이다.
- SyntaxException Class : syntax analyzer 의 exception 을 담당하는 class 이다.
compiler 의 file system 관련 Class 들을 모아놓은 package 이다.
- FileProcessing Class : 해당 compiler 의 file I/O 를 담당하는 class 이다.
lexical analyzer 객체인 lexer 와 관련된 Class 들을 모아놓은 package 이다.
- DFA Class : lexical analyzer 에 사용되는 DFA 의 생성을 담당하는 Class 이다.
- Lexer Class : lexical analyzer 의 객체로, 실제 string tokenize 를 담당하는 Class 이다.
syntax analyzer 객체인 syntaxer 와 관련된 Class 들을 모아놓은 package 이다.
- Syntaxer Class : syntax analyzer 의 객체로, 실제 syntax analysis 를 담당하는 Class 이다.
lexical analyzer 를 통해 분류되는 token 과 관련된 Class 를 모아놓은 package 이다.
- InputString Class : input 으로 들어오는 C source code string 정보를 담당하는 Class 이다.
- Token Class : lexical analyzer 를 통해 분류된 token 정보를 담당하는 Class 이다.
compiler 의 동작 test 를 위한 Class 들을 모아놓은 package 이다.
- Main Class : compiler 의 수행을 test 해볼 수 있는 test code 가 작성되는 Class 이다.







