24. Hoge Driven Curry Implementation Patterns
COPYRIGHT 2013 PLUGRAM, INC.
Structure of a Typical Compiler
lexical analysis
syntactic analysis
interpreter
IR code generation
optimization
code generationsemantic analysis
character stream
tokens
AST
annotated AST
IR
IR
target language
words
sentences
http://www.cs.colostate.edu/ mstrout/CS553Fall06/slides/lecture02c-ugradrev.pdf
13年7月27日土曜日
26. Hoge Driven Curry Implementation Patterns
COPYRIGHT 2013 PLUGRAM, INC.
字句解析器を作る
< el e me nt attr= hoge />
例)XML
13年7月27日土曜日
27. Hoge Driven Curry Implementation Patterns
COPYRIGHT 2013 PLUGRAM, INC.
字句解析器を作る
< el e me nt attr= hoge />
TAG_OPEN WS EQ WS
ELEMENT ATTR_KEY ATTR_VALUE TAG_CLOSE
例)XML
13年7月27日土曜日
28. Hoge Driven Curry Implementation Patterns
COPYRIGHT 2013 PLUGRAM, INC.
字句解析器を作る
デモ
[ba c kp aper, daiksy,irof]
LBRACK RBRACKCOMMA COMMANAME NAME NAME
13年7月27日土曜日
29. Hoge Driven Curry Implementation Patterns
COPYRIGHT 2013 PLUGRAM, INC.
構文解析器を作る
[ba c kp aper, daiksy,irof]
list : '[' elements ']' ;
elements : element (',' element)* ;
element : NAME | list ;
NAME : ('a'..'z' |'A'..'Z' )+ ;
13年7月27日土曜日
31. Hoge Driven Curry Implementation Patterns
COPYRIGHT 2013 PLUGRAM, INC.
構文解析器を作る
デモ
options {backtrack=true;memoize=true}
stat : list EOF | assign EOF ;
assign : list '=' list ;
list : '[' elements ']' ;
elements : element (',' element)* ;
element : NAME '=' NAME | NAME | list ;
NAME : LETTER+ ;
fragment
LETTER : 'a'..'z'|'A'..'Z';
WS : (' '|'t'|'n'|'r')+ {skip();} ;
13年7月27日土曜日