inger EBNF
module
module: "module" <identifier> ";" {[extern] global}.
global
global: function | declaration.
Functions
function
function: functionheader [ ";" | block ].
functionheader
functionheader: ["start"] <identifier> ":" paramlist "->" returntype.
paramlist
paramlist: "void" | paramblock {";" paramblock}.
paramblock
paramblock: type param {"," param}.
param
param: {"*"} <identifier> {"[" "]"}.
returntype
returntype: type {"*"} {"[" "]"}.
Blocks and statements
block
block: "{" { statement | block } "}".
statement
statement: "label" <identifier> ";"
statement: ";"
statement: "break" ";"
statement: "continue" ";"
statement: expression ";"
statement: declarationblock ";"
statement: "if" "(" expression ")" block [ "else" block ].
statement: "goto" <identifier> ";"
statement: "while" "(" expression ")" "do" block
statement: "do" block "while" "(" expression ")" ";"
statement: "switch" "(" expression ")" "{" { "case" <int_literal> block } "default" block "}"
statement: "return" "(" expression ")"
";".
declarationblock
declarationblock: type declaration {"," declaration}.
declaration
local: {"*"} <identifier> {"[" <int_literal> "]"} [ "=" expression ].
Expressions
Assignment
expression: logicalor {"=" logicalor expression}.
Logical OR
logicalor: logicaland {"||" logicaland logicalor}.
Logical AND
logicaland: bitwiseor {"&&" bitwiseor logicaland}.
Bitwise OR
bitwiseor: bitwisexor {"|" bitwisexor bitwiseor}.
Bitwise XOR
bitwisexor: bitwiseand {"^" bitwiseand bitwisexor}.
Bitwise AND
bitwiseand: equality {"&" equality bitwiseand}.
Equality
equality: relation {("==" | "!=") relation equality}.
Relation
relation: shift {("<" | "<=" | ">" | ">=") shift relation}.
Bitwise shift
shift: addition {("<<" | ">>") addition shift}.
Addition/subtraction
addition: multiplication {("+" | "-") multiplication addition}
Multiplication/division
multiplication: unary3 {("*" | "/" | "%") unary3 multiplication}.
Unary operations
Reference, indirection and bitwise complement
unary3: {("&" | "*" | "~")} unary2.
Unary negation, unary plus and logical NOT
unary2: {("+" | "-" | "!")} factor.
Factor and application
factor
factor: <identifier> [application] | immediate | "(" expression ")".
application
application: "[" expression "]" application | "(" expression {"," expression } ")".
Types and immediates
type
type: "bool" | "char" | "float" | "int" | "string".
immediate
immediate: <boolean_literal> | <char_literal> | <float_literal> | <int_literal> | <string_literal>.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.