?? clang1.atg
字號:
COMPILER Clang1/* Simple CLANG level 1 parser. See "Programming Language Translation" by P.D. Terry (Addison Wesley 1986) Adapted from Pat Terry's distribution*/IGNORE CASECHARACTERS eol = CHR(10) . letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" . digit = "0123456789" . noquote1 = ANY - "'" - eol . noquote2 = ANY - '"' - eol .IGNORE CHR(9) .. CHR(13)TOKENS identifier = letter {letter | digit} . number = digit { digit} . string = "'" noquote1 {noquote1} "'" | '"' noquote2 {noquote2} '"' .PRODUCTIONS Clang1 = "PROGRAM" ProgIdentifier ";" Block "." . Block = [ ConstDeclarations ] [ VarDeclarations ] CompoundStatement . ConstDeclarations = "CONST" ConstIdentifier "=" number ";" SYNC { ConstIdentifier "=" number ";" SYNC } . VarDeclarations = "VAR" VarIdentifier { WEAK "," VarIdentifier } ";" SYNC . CompoundStatement = "BEGIN" Statement { WEAK ";" Statement } "END" . Statement = SYNC [ CompoundStatement | Assignment | IfStatement | WhileStatement | WriteStatement | ReadStatement ] . Assignment = VarDesignator ":=" Expression . IfStatement = "IF" Condition "THEN" Statement . WhileStatement = "WHILE" Condition "DO" Statement . WriteStatement = "WRITE" [ "(" WriteList ")" ] . ReadStatement = "READ" "(" VarDesignator { "," VarDesignator } ")" . Condition = "ODD" "(" Expression ")" | Expression RelOp Expression SYNC . WriteList = ( Expression | string ) { "," ( Expression | string ) }. Expression = SYNC ( Term | "+" Term | "-" Term) { AddOp Term } . Term = Factor { MulOp Factor } . Factor = SYNC (identifier | number | "(" Expression ")" ) . VarDesignator = VarIdentifier . AddOp = "+" | "-" . MulOp = "*" | "/" . RelOp = "=" | "<>" | "<" | "<=" | ">" | ">=" . ProgIdentifier = identifier . VarIdentifier = identifier . ConstIdentifier = identifier .END Clang1.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -