• R/O
  • SSH

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2


Commit MetaInfo

Revisiondb00795b866a7419811acac98d932b2c0e4475ce (tree)
Time2021-12-11 00:18:18
AuthorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

Rewriten grammar.py (old: ~1, new~2; symlink to select, for NOW. Need t rewrite test

Change Summary

Incremental Difference

diff -r dc50c83a7742 -r db00795b866a Arpeggio/pytst/grammar.peg
--- a/Arpeggio/pytst/grammar.peg Fri Dec 10 15:53:35 2021 +0100
+++ b/Arpeggio/pytst/grammar.peg Fri Dec 10 16:18:18 2021 +0100
@@ -1,37 +1,38 @@
1-//This is a fragment from ../examples/My_GrammarParser.Castle
1+//This is the PEG version og grammar(2).py
22
3- peg_grammar <- rule+ ;
4- rule <- rule_name '<-' ordered_choice ';' ;
5- ordered_choice <- sequence ('|' sequence)* ;
6- sequence <- prefix* ;
7- prefix <- ( AND | NOT )? suffix ;
8- suffix <- expression ( '?' | '*' | '+' | '#' )? ;
9- expression <- regex_term
10- | rule_crossref
11- | '(' ordered_choice ')'
12- | str_term
13- ;
14- rule_crossref <- rule_name;
15- rule_name <- ID ;
16- str_term <- "'" str_no_s1 "'"
17- | '"' str_no_d1 '"'
18- | "'''" str_no_s3 "'''"
19- | '"""' str_no_d3 '"""'
20- ;
21- regex_term <- '/' str_no_slash '/'
22- | "r'" str_no_s1 "'"
23- | 'r"' str_no_d1 '"'
24- | "r'''" str_no_s3 "'''"
25- | 'r"""' str_no_d3 '"""'
26- | "R'" str_no_s1 "'"
27- | 'R"' str_no_d1 '"'
28- | "R'''" str_no_s3 "'''"
29- | 'R"""' str_no_d3 '"""'
30- ;
31- str_no_slash <- /((\\/)|[^\/])*/ ;
32- str_no_XXX <- XXX
33- | ETC
34- ;
35- AND <- '&' ;
36- NOT <- '!' ;
3+peg_grammar <- rules ;
4+rules <- rule+ ;
5+rule <- rule_name '<-' expressions ';' ;
376
7+expressions <- single_expr+ ( '|' expressions )? ;
8+single_expr <- ( rule_crossref | term | group | predicate ) ( '?' | '*' | '+' | '#' )? ;
9+
10+term <- str_term | regex_term ;
11+group <- '(' expressions ')' ;
12+predicate <- ( '&' | '!' ) single_expr ;
13+
14+str_term <- "'" str_no_s1 "'"
15+ | '"' str_no_d1 '"'
16+ | "'''" str_no_s3 "'''"
17+ | '"""' str_no_d3 '"""'
18+ ;
19+regex_term <- '/' str_no_slash '/'
20+ | "r'" str_no_s1 "'"
21+ | 'r"' str_no_d1 '"'
22+ | "r'''" str_no_s3 "'''"
23+ | 'r"""' str_no_d3 '"""'
24+ | "R'" str_no_s1 "'"
25+ | 'R"' str_no_d1 '"'
26+ | "R'''" str_no_s3 "'''"
27+ | 'R"""' str_no_d3 '"""'
28+ ;
29+
30+rule_crossref <- ID ;
31+rule_name <- ID ;
32+ID <- /[A-Za-z_][A-Za-z0-9_]*/ ;
33+
34+str_no_slash <- /((\\/)|[^\/])*/ ;
35+str_no_XXX <- XXX
36+ | ETC
37+ ;
38+