Last active
November 2, 2016 11:32
-
-
Save sftblw/de0ac03c71a1c35e67a8518b0fc84613 to your computer and use it in GitHub Desktop.
GNE.g4 (학습이 더 필요) - 언어 GNE의 ANTLR 4 PGS용 문법 만들다 만 거
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| grammar GNE; | |
| // parse rules | |
| //// program | |
| program | |
| : statement* | |
| ; | |
| //// statement | |
| statement | |
| : blockStatement | |
| | functionStatement | |
| | traceStatement | |
| | importStatement | |
| | exportStatement | |
| | varStatement | |
| | exceptionStatement | |
| | expressionStatement | |
| ; | |
| blockStatement | |
| : '{' statement* '}' | |
| ; | |
| functionStatement | |
| : K_Identifier '.' | |
| ; | |
| traceStatement | |
| : '우리의 목표는, 진행하는 것 그것으로' '.' | |
| ; | |
| importStatement | |
| : Import Identifier '.' | |
| ; | |
| exportStatement | |
| : Export Identifier '.' | |
| ; | |
| varStatement | |
| : Var Identifier '.' | |
| ; | |
| expressionStatement | |
| : expression '.' | |
| ; | |
| exceptionStatement | |
| : Try statement Catch statement | |
| ; | |
| //// expression | |
| expression | |
| : expression ( '+' | '더하기') expression # additiveExpression | |
| | '우리의' expression Josa expression '이것이다' # assignmentExpression | |
| | New Identifier # newExpression | |
| | expression '(' formalParameter (',' formalParameter)? ')' # callExpression | |
| | literal # literalExpression | |
| | Identifier # identifierExpression | |
| ; | |
| formalParameter | |
| : Identifier | |
| ; | |
| //// lexical rules | |
| literal | |
| : BooleanLiteral | |
| | StringLiteral | |
| | NumericLiteral | |
| ; | |
| BooleanLiteral | |
| : True | |
| | False | |
| ; | |
| StringLiteral | |
| : '"' [ㄱ-힣]+ '"' | |
| | '\'' [ㄱ-힣]+ '\'' | |
| ; | |
| NumericLiteral | |
| : [0-9]+ ('.' [0-9]+)? | |
| ; | |
| // scanner rules | |
| Josa | |
| : '은,' | |
| | '는,' | |
| ; | |
| StatementEnd: '.'; | |
| True : '친박'; | |
| False: '비박'; | |
| Var: '공천'; | |
| Import: '입당'; | |
| Export: '출당'; | |
| New: '창조'; | |
| Try: '코드 텅텅 빌때까지 한번 해 보세요'; | |
| Catch: '예외처리 다 어디 갔냐고'; | |
| Identifier | |
| : [ㄱ-힣]+ // 은, 는, 부분까지 매칭되는 문제 있음 (현재 지식으로 해결 불가) | |
| | K_Identifier | |
| ; | |
| K_Identifier | |
| : 'K-' Identifier | |
| ; | |
| MultilineComment: '/ㄹ' .*? 'ㄹ/' -> channel(HIDDEN); | |
| WhiteSpaces: [\t\r\n ]+ -> channel(HIDDEN); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment