• 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

Revisión9c5c65a7cdb0fc6e4559d4d8f1aa3398c2692e18 (tree)
Tiempo2023-01-14 22:03:28
AutorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

untabified & return-statements alligned

Cambiar Resumen

Diferencia incremental

diff -r e16ad46a9d2a -r 9c5c65a7cdb0 castle/readers/parser/grammar/language.py
--- a/castle/readers/parser/grammar/language.py Sat Jan 14 13:52:59 2023 +0100
+++ b/castle/readers/parser/grammar/language.py Sat Jan 14 14:03:28 2023 +0100
@@ -19,49 +19,49 @@
1919 from arpeggio import ParserPython
2020
2121
22-def peg_grammar(): return rules, EOF
23-def rules(): return OneOrMore([parse_rule, setting])
24-def parse_rule(): return rule_name, '<-', expression, ";"
25-
26-def expression(): return sequence, op_alternative
27-def sequence(): return OneOrMore(single_expr)
28-def single_expr(): return [ rule_crossref, term, group, predicate ], op_quantity
29-
30-def op_alternative(): return Optional( '|' , expression )
31-def op_quantity(): return Optional([ '?' , '*' , '+' , '#' ])
32-
33-def term(): return [ str_term, regex_term ]
34-def group(): return '(', expression, ')'
35-def predicate(): return ['&','!'], single_expr
22+def peg_grammar(): return rules, EOF
23+def rules(): return OneOrMore([parse_rule, setting])
24+def parse_rule(): return rule_name, '<-', expression, ";"
3625
37-def str_term(): return [ (S3, str_no_s3, S3),
38- (D3, str_no_d3, D3),
39- (S1, str_no_s1, S1),
40- (D1, str_no_d1, D1) ]
41-def regex_term(): return [ (RE, re_no_slash, RE),
42- (REs3, str_no_s3, S3),
43- (REd3, str_no_d3, D3),
44- (REs1, str_no_s1, S1),
45- (REd1, str_no_d1, D1) ]
46-
47-def rule_name(): return ID
48-def rule_crossref(): return ID
49-def ID(): return _(r"[a-zA-Z_]([a-zA-Z_]|[0-9])*")
26+def expression(): return sequence, op_alternative
27+def sequence(): return OneOrMore(single_expr)
28+def single_expr(): return [ rule_crossref, term, group, predicate ], op_quantity
5029
51-def re_no_slash(): return _(r"((\\/)|[^\/])*")
52-def str_no_s1(): return _(r"((\\')|[^'\n])*") # Does NOT match multiline -- note 'multiline=False' is not the same
53-def str_no_d1(): return _(r'((\\")|[^"\n])*') # idem
54-def str_no_s3(): return _(r"([^']|('[^'])|(''[^']))*") # ALLOW multiline
55-def str_no_d3(): return _(r'''([^"]|("[^"])|(""[^"]))*''') # idem
30+def op_alternative(): return Optional( '|' , expression )
31+def op_quantity(): return Optional([ '?' , '*' , '+' , '#' ])
5632
57-def setting(): return setting_name, '=', value, ';'
58-def setting_name(): return ID
59-def value(): return [ str_term, regex_term, number, setting_xref ]
60-def number(): return [ complex_lit, float_lit, int_lit ]
61-def setting_xref(): return ID
62-def complex_lit(): return _(r"[+-]?([0-9](\.[0-9]*)?)[+-][iIjJ]([0-9](\.[0-9]*)?)")
63-def float_lit(): return _(r"[+-]?[0-9]\.[0-9]+")
64-def int_lit(): return _(r"[+-]?[1-9][0-9]*")
33+def term(): return [ str_term, regex_term ]
34+def group(): return '(', expression, ')'
35+def predicate(): return ['&','!'], single_expr
36+
37+def str_term(): return [ (S3, str_no_s3, S3),
38+ (D3, str_no_d3, D3),
39+ (S1, str_no_s1, S1),
40+ (D1, str_no_d1, D1) ]
41+def regex_term(): return [ (RE, re_no_slash, RE),
42+ (REs3, str_no_s3, S3),
43+ (REd3, str_no_d3, D3),
44+ (REs1, str_no_s1, S1),
45+ (REd1, str_no_d1, D1) ]
46+
47+def rule_name(): return ID
48+def rule_crossref(): return ID
49+def ID(): return _(r"[a-zA-Z_]([a-zA-Z_]|[0-9])*")
50+
51+def re_no_slash(): return _(r"((\\/)|[^\/])*")
52+def str_no_s1(): return _(r"((\\')|[^'\n])*") # Does NOT match multiline -- note 'multiline=False' is not the same
53+def str_no_d1(): return _(r'((\\")|[^"\n])*') # idem
54+def str_no_s3(): return _(r"([^']|('[^'])|(''[^']))*") # ALLOW multiline
55+def str_no_d3(): return _(r'''([^"]|("[^"])|(""[^"]))*''') # idem
56+
57+def setting(): return setting_name, '=', value, ';'
58+def setting_name(): return ID
59+def value(): return [ str_term, regex_term, number, setting_xref ]
60+def number(): return [ complex_lit, float_lit, int_lit ]
61+def setting_xref(): return ID
62+def complex_lit(): return _(r"[+-]?([0-9](\.[0-9]*)?)[+-][iIjJ]([0-9](\.[0-9]*)?)")
63+def float_lit(): return _(r"[+-]?[0-9]\.[0-9]+")
64+def int_lit(): return _(r"[+-]?[1-9][0-9]*")
6565
6666
6767 S1 = "'"
@@ -74,4 +74,4 @@
7474 REs3 = _(r"[rR]'''")
7575 REd3 = _(r'[rR]"""')
7676
77-def comment(): return ["#", r'//'], _(r".*\n")
77+def comment(): return ["#", r'//'], _(r".*\n")