• R/O
  • SSH

Commit

Tags
Aucun tag

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

Révisionc96d582a07d767ce81e597d1c5fe88d8aedd844f (tree)
l'heure2021-12-11 04:40:49
AuteurAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Message de Log

Rewriten grammar.py Done. 'grammar.py' is now grammar2

Change Summary

Modification

diff -r f751c988d68b -r c96d582a07d7 Arpeggio/grammar.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Arpeggio/grammar.py Fri Dec 10 20:40:49 2021 +0100
@@ -0,0 +1,48 @@
1+from arpeggio import Optional, ZeroOrMore, OneOrMore, EOF
2+from arpeggio import RegExMatch as _
3+from arpeggio import ParserPython
4+
5+def peg_grammar(): return rules, EOF
6+def rules(): return OneOrMore(rule)
7+def rule(): return rule_name, '<-', expressions, ";"
8+
9+def expressions(): return ( OneOrMore(single_expr), Optional( '|' , expressions ) )
10+def single_expr(): return ( [ rule_crossref, term, group, predicate ], Optional([ '?' , '*' , '+' , '#' ]))
11+
12+def term(): return [ str_term, regex_term ]
13+def group(): return '(', expressions, ')'
14+def predicate(): return ['&','!'], single_expr
15+
16+def str_term(): return [ (S3, str_no_s3, S3),
17+ (D3, str_no_d3, D3),
18+ (S1, str_no_s1, S1),
19+ (D1, str_no_d1, D1) ]
20+def regex_term(): return [ (RE, re_no_slash, RE),
21+ (REs3, str_no_s3, S3),
22+ (REd3, str_no_d3, D3),
23+ (REs1, str_no_s1, S1),
24+ (REd1, str_no_d1, D1) ]
25+
26+def rule_name(): return ID
27+def rule_crossref(): return ID
28+def ID(): return _(r"[a-zA-Z_]([a-zA-Z_]|[0-9])*")
29+
30+def re_no_slash(): return _(r"((\\/)|[^\/])*")
31+def str_no_s1(): return _(r"((\\')|[^'\n])*") # Does NOT match multiline -- note 'multiline=False' is not the same
32+def str_no_d1(): return _(r'((\\")|[^"\n])*') # idem
33+def str_no_s3(): return _(r"([^']|('[^'])|(''[^']))*") # ALLOW multiline
34+def str_no_d3(): return _(r'''([^"]|("[^"])|(""[^"]))*''') # idem
35+
36+S1 = "'"
37+D1 = '"'
38+S3 = "'''"
39+D3 = '"""'
40+RE = '/'
41+REs1 = _(r"[rR]'")
42+REd1 = _(r'[rR]"')
43+REs3 = _(r"[rR]'''")
44+REd3 = _(r'[rR]"""')
45+
46+def comment(): return "//", _(".*\n")
47+
48+
diff -r f751c988d68b -r c96d582a07d7 Arpeggio/grammar1.py
--- a/Arpeggio/grammar1.py Fri Dec 10 20:39:26 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
1-from arpeggio import Optional, ZeroOrMore, OneOrMore, EOF
2-from arpeggio import RegExMatch as _
3-from arpeggio import ParserPython
4-
5-def peg_grammar(): return rules, EOF
6-def rules(): return OneOrMore(rule)
7-def rule(): return rule_name, '<-', ordered_choice, ";"
8-def ordered_choice(): return sequence, ZeroOrMore('|', sequence)
9-def sequence(): return ZeroOrMore(prefix)
10-def prefix(): return Optional(['&','!']), suffix
11-def suffix(): return expression, Optional([ '?' , '*' , '+' , '#' ])
12-def expression(): return [ regex_term, str_term, ('(', ordered_choice, ')'), rule_crossref] # OrderedChoice
13-def rule_crossref(): return rule_name
14-def rule_name(): return ID
15-def regex_term(): return [ (RE, re_no_slash, RE), # OrderedChoice
16- (REs3, str_no_s3, S3),
17- (REd3, str_no_d3, D3),
18- (REs1, str_no_s1, S1),
19- (REd1, str_no_d1, D1) ]
20-def str_term(): return [ (S3, str_no_s3, S3), # OrderedChoice
21- (D3, str_no_d3, D3),
22- (S1, str_no_s1, S1),
23- (D1, str_no_d1, D1) ]
24-
25-def ID(): return _(r"[a-zA-Z_]([a-zA-Z_]|[0-9])*")
26-
27-def re_no_slash(): return _(r"((\\/)|[^\/])*")
28-
29-def str_no_s1(): return _(r"((\\')|[^'\n])*") # Does NOT match multiline -- note 'multiline=False' is not the same
30-def str_no_d1(): return _(r'((\\")|[^"\n])*') # idem
31-def str_no_s3(): return _(r"([^']|('[^'])|(''[^']))*") # ALLOW multiline
32-def str_no_d3(): return _(r'''([^"]|("[^"])|(""[^"]))*''') # idem
33-
34-S1 = "'"
35-D1 = '"'
36-S3 = "'''"
37-D3 = '"""'
38-RE = '/'
39-REs1 = _(r"[rR]'")
40-REd1 = _(r'[rR]"')
41-REs3 = _(r"[rR]'''")
42-REd3 = _(r'[rR]"""')
43-
44-def comment(): return "//", _(".*\n")
45-
diff -r f751c988d68b -r c96d582a07d7 Arpeggio/grammar2.py
--- a/Arpeggio/grammar2.py Fri Dec 10 20:39:26 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
1-from arpeggio import Optional, ZeroOrMore, OneOrMore, EOF
2-from arpeggio import RegExMatch as _
3-from arpeggio import ParserPython
4-
5-def peg_grammar(): return rules, EOF
6-def rules(): return OneOrMore(rule)
7-def rule(): return rule_name, '<-', expressions, ";"
8-
9-def expressions(): return ( OneOrMore(single_expr), Optional( '|' , expressions ) )
10-def single_expr(): return ( [ rule_crossref, term, group, predicate ], Optional([ '?' , '*' , '+' , '#' ]))
11-
12-def term(): return [ str_term, regex_term ]
13-def group(): return '(', expressions, ')'
14-def predicate(): return ['&','!'], single_expr
15-
16-def str_term(): return [ (S3, str_no_s3, S3),
17- (D3, str_no_d3, D3),
18- (S1, str_no_s1, S1),
19- (D1, str_no_d1, D1) ]
20-def regex_term(): return [ (RE, re_no_slash, RE),
21- (REs3, str_no_s3, S3),
22- (REd3, str_no_d3, D3),
23- (REs1, str_no_s1, S1),
24- (REd1, str_no_d1, D1) ]
25-
26-def rule_name(): return ID
27-def rule_crossref(): return ID
28-def ID(): return _(r"[a-zA-Z_]([a-zA-Z_]|[0-9])*")
29-
30-def re_no_slash(): return _(r"((\\/)|[^\/])*")
31-def str_no_s1(): return _(r"((\\')|[^'\n])*") # Does NOT match multiline -- note 'multiline=False' is not the same
32-def str_no_d1(): return _(r'((\\")|[^"\n])*') # idem
33-def str_no_s3(): return _(r"([^']|('[^'])|(''[^']))*") # ALLOW multiline
34-def str_no_d3(): return _(r'''([^"]|("[^"])|(""[^"]))*''') # idem
35-
36-S1 = "'"
37-D1 = '"'
38-S3 = "'''"
39-D3 = '"""'
40-RE = '/'
41-REs1 = _(r"[rR]'")
42-REd1 = _(r'[rR]"')
43-REs3 = _(r"[rR]'''")
44-REd3 = _(r'[rR]"""')
45-
46-def comment(): return "//", _(".*\n")
47-
48-