Closed yus1108 closed 3 months ago
필요/수정 general expressions:
[x] \ [optional: const] token_data_type
[optional: const]
[x] \ identifier lparen <function_call_parameters> rparen
identifier
lparen
<function_call_parameters>
rparen
Expression: Prefix:
<literal>
<identifier>
<data_type>
<prefix_expression>
Infix:
<infix_expression>
<function_call>
<index_expression>
Infix Expressions
[x] : <expression> plus|minus|asterisk|slash <expression>
<expression>
plus|minus|asterisk|slash
[x] \ : <expression> lbracket [optional: <expression>] rbracket
lbracket
rbracket
필요 special expressions (parse expression에 의해 파싱 되지 않는 expressions):
[x] !: <expression> comma <expression> [optional: comma <function_call_parameters>]
comma
[x] !\ <data_type> <identifier> [optional: comma <function_parameter>] [optional: comma keyword_variadic] keyword_variadic
<function_parameter>
keyword_variadic
[x] !\ [statement] [optional: [statement]]
[statement]
[x] !\ identifier [optional: assign <expression>] [optional: comma !<enum_block>]
assign
!<enum_block>
필요/수정 statements:
[x] [macro_include] macro_include
macro_include
[x] [comment] comment -> 코멘트는 모든 파싱에서 무시되는 토큰입니다.
comment
[x] [variable] <data_type> <identifier>|<index_expression : left=<identifier>> [optional: assign <expression>] semicolon
<identifier>|<index_expression : left=<identifier>>
semicolon
[x] [function] <data_type>|<index_expression : left=<data_type>> <identifier> lparen !<function_declaration_parameters> rparen [optional: const] [semicolon or rparen lbrace !<function_block> rbrace]
<data_type>|<index_expression : left=<data_type>>
!<function_declaration_parameters>
const
lbrace
!<function_block>
rbrace
[x] [function_call] <function_call> semicolon
[x] [enum] keyword_enum <identifier> [optional: colon <data_type>] lbrace !<enum_block> rbrace semicolon -> 해당 statement를 파싱 하였을 경우:
keyword_enum
colon
{custom_enum_type, identifier}
{custom_enum_data, "type_identifier::data_identifier"}
Originally posted by @yus1108 in #18
https://github.com/yus1108/mcf/issues/18#issue-2407654942
필요/수정 general expressions:
[x] \
[optional: const]
token_data_type[x] \
identifier
lparen
<function_call_parameters>
rparen
Expression: Prefix:
<literal>
<identifier>
<data_type>
<prefix_expression>
Infix:
<infix_expression>
<function_call>
<index_expression>
Infix Expressions
[x] :
<expression>
plus|minus|asterisk|slash
<expression>
[x] \ :
<expression>
lbracket
[optional:<expression>
]rbracket
필요 special expressions (parse expression에 의해 파싱 되지 않는 expressions):
[x] !:
<expression>
comma
<expression>
[optional:comma
<function_call_parameters>
][x] !\
<data_type>
<identifier>
[optional:comma
<function_parameter>
] [optional:comma
keyword_variadic
]keyword_variadic
[x] !\
[statement]
[optional:[statement]
][x] !\
identifier
[optional:assign
<expression>
] [optional:comma
!<enum_block>
]필요/수정 statements:
[x] [macro_include]
macro_include
[x] [comment]
comment
-> 코멘트는 모든 파싱에서 무시되는 토큰입니다.[x] [variable]
<data_type>
<identifier>|<index_expression : left=<identifier>>
[optional:assign
<expression>
]semicolon
[x] [function]
<data_type>|<index_expression : left=<data_type>>
<identifier>
lparen
!<function_declaration_parameters>
rparen
[optional:const
] [semicolon
orrparen
lbrace
!<function_block>
rbrace
][x] [function_call]
<function_call>
semicolon
[x] [enum]
keyword_enum
<identifier>
[optional:colon
<data_type>
]lbrace
!<enum_block>
rbrace
semicolon
-> 해당 statement를 파싱 하였을 경우:{custom_enum_type, identifier}
으로 추가합니다.{custom_enum_data, "type_identifier::data_identifier"}
으로 추가합니다.Originally posted by @yus1108 in #18