Added multiline strings.
This commit is contained in:
parent
7606b7af8c
commit
417abe105c
12
mparser.py
12
mparser.py
|
@ -39,6 +39,7 @@ tokens = ['LPAREN',
|
||||||
'COMMA',
|
'COMMA',
|
||||||
'DOT',
|
'DOT',
|
||||||
'STRING',
|
'STRING',
|
||||||
|
'MULTILINE_STRING',
|
||||||
'INT',
|
'INT',
|
||||||
'EOL_CONTINUE',
|
'EOL_CONTINUE',
|
||||||
'EOL',
|
'EOL',
|
||||||
|
@ -66,6 +67,13 @@ def t_ATOM(t):
|
||||||
t.type = reserved.get(t.value, 'ATOM')
|
t.type = reserved.get(t.value, 'ATOM')
|
||||||
return t
|
return t
|
||||||
|
|
||||||
|
|
||||||
|
def t_MULTILINE_STRING(t):
|
||||||
|
r"'''(.|\n)*?'''"
|
||||||
|
t.value = t.value[3:-3]
|
||||||
|
t.lexer.lineno += t.value.count('\n')
|
||||||
|
return t
|
||||||
|
|
||||||
def t_STRING(t):
|
def t_STRING(t):
|
||||||
"'[^']*'"
|
"'[^']*'"
|
||||||
t.value = t.value[1:-1]
|
t.value = t.value[1:-1]
|
||||||
|
@ -127,6 +135,10 @@ def p_expression_string(t):
|
||||||
'expression : STRING'
|
'expression : STRING'
|
||||||
t[0] = nodes.StringExpression(t[1], t.lineno(1))
|
t[0] = nodes.StringExpression(t[1], t.lineno(1))
|
||||||
|
|
||||||
|
def p_expression_multiline_string(t):
|
||||||
|
'expression : MULTILINE_STRING'
|
||||||
|
t[0] = nodes.StringExpression(t[1], t.lineno(1))
|
||||||
|
|
||||||
def p_statement_assign(t):
|
def p_statement_assign(t):
|
||||||
'statement : expression ASSIGN statement'
|
'statement : expression ASSIGN statement'
|
||||||
t[0] = nodes.Assignment(t[1], t[3], t[1].lineno())
|
t[0] = nodes.Assignment(t[1], t[3], t[1].lineno())
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
project('multiline string', 'c')
|
||||||
|
|
||||||
|
x = '''hello again'''
|
||||||
|
y = '''hello
|
||||||
|
again'''
|
||||||
|
|
||||||
|
if x == y
|
||||||
|
error('Things are wrong.')
|
||||||
|
endif
|
Loading…
Reference in New Issue