-
Notifications
You must be signed in to change notification settings - Fork 0
基于LR1的纯java语法分析器
License
moilioncircle/syntax-parser
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
sparser/llsp ======= llsp -version 0.1.0 llsp 简介: -llsp是一个基于LR1的纯java语法分析器;运行在jdk1.7上;可以语法自举(即自己可以分析自己)。 -通过JFLex进行词法分析之后,应用llsp来进行语法分析,并根据规则生成抽象语法树。 -llsp可以在eclipse中直接以工程导入。有两个example:简易计算器与json格式化;可执行CalcTest,JsonTest查看运行结果。 -llsp支持基于continuation方式的muti-error-recovery;检测多个语法错误之后给出修正建议;而不是检测出一个错误终止分析。 -llsp支持高度二义性文法。 -llsp支持根据语法优先级与结合性解决shift-reduce冲突,支持根据产生式定义顺序解决reduce-reduce冲突。 llsp 可以做什么: -语法检查。 -语法高亮。 -基于语法分析的格式化。 -基于LR1的编译器或解释器等等。 llsp 如何使用: -请看 CalcTest,JsonTest两个入口类。 llsp 即将添加与改进的功能: -语义检查。 -E-BNF支持。 -正则表达式支持。 -LALR支持。 -改进语义分析。 llsp的语法: program : Descriptor EOF #generate_program($0)# ; Descriptor : ACTION Declarations SectionMarker Productions Usercode #generate_descriptor($0,$1,$3,$4)# ; Usercode : SectionMarker ACTION #generate_footer($1)# | SectionMarker #generate_footer(null)# ; SectionMarker : MARK ## ; Declarations : Declarations Declaration #generate_declarations($0,$1)# | Declaration #generate_declarations($0)# ; Declaration : Precedence Tokens SEMI #generate_assoc($0,$1)# | NAME COLON Token NUM NUM SEMI #generate_terminal($2,$3,$4)# | START COLON Token SEMI #generate_start_symbol($0,$2)# | CLASSNAME Token SEMI #generate_classname($0,$1)# ; Precedence : LEFT #generate_associativity($0)# | RIGHT #generate_associativity($0)# | NONASSOC #generate_associativity($0)# | BINARY #generate_associativity($0)# ; Tokens : Tokens COMMA Token #generate_tokens($0,$2)# | Token #generate_tokens($0)# ; Token : TOKEN #generate_token($0)# ; Productions : Productions TOKEN COLON Rules SEMI #generate_productions($0,$1,$3)# | TOKEN COLON Rules SEMI #generate_productions($0,$2)# ; Rules : Rules OR GrammarRule #generate_rules($0,$2)# | GrammarRule #generate_rules($0)# ; GrammarRule : Rule Prec ACTION #generate_grammarRule($0,$1,$2)# | Rule ACTION #generate_grammarRule($0,null,$1)# | ACTION #generate_grammarRule(null,null,$0)# | #generate_grammarRule(null,null,null)# ; Rule : Rule TOKEN #generate_rule($0,$1)# | TOKEN #generate_rule($0)# ; Prec : PREC TOKEN #generate_prec($1)# ;
About
基于LR1的纯java语法分析器
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published