Skip to content
Snippets Groups Projects
Commit a5374b8f authored by pycsham's avatar pycsham
Browse files

Merge branch 'master' of https://git.uwaterloo.ca/x299yang/cs444

parents 6857c573 feca561c
No related branches found
No related tags found
No related merge requests found
...@@ -304,16 +304,33 @@ def JoosTransition(input, state): ...@@ -304,16 +304,33 @@ def JoosTransition(input, state):
elif (state == 'STRINGESC'): elif (state == 'STRINGESC'):
if input == 'u': if input == 'u':
return 'UNICODE' #going to be discarded return 'UNICODE' #going to be discarded
if input.isdigit() and 0 <= int(input) <= 7:
return 'LSTRING'
if input not in ('n', 'r', 't', 'v', '\\','\'', '"', '?', 'b' ): if input not in ('n', 'r', 't', 'v', '\\','\'', '"', '?', 'b' ):
return None return None
return 'LSTRING' return 'LSTRING'
elif(state == 'CHAROCTAVEESC'):
if input.isdigit() and 0 <= int(input) <= 7:
return 'CHAROCTAVEESC1'
if (input == '\''):
return 'LITERALCHAR'
return None
elif(state == 'CHAROCTAVEESC1'):
if input.isdigit() and 0 <= int(input) <= 7:
return 'CHAREND'
if (input == '\''):
return 'LITERALCHAR'
return None
# char literal # char literal
elif (state == 'LCHAR'): elif (state == 'LCHAR'):
if (input == '\\'): if (input == '\\'):
return 'CHARESC' return 'CHARESC'
return 'CHAREND' return 'CHAREND'
elif (state == 'CHARESC'): elif (state == 'CHARESC'):
if input.isdigit() and 0 <= int(input) <= 7:
return 'CHAROCTAVEESC'
if input not in ('n', 'r', 't', 'v', '\\','\'', '"', '?', 'b' ): if input not in ('n', 'r', 't', 'v', '\\','\'', '"', '?', 'b' ):
return None return None
return 'CHAREND' return 'CHAREND'
...@@ -452,7 +469,9 @@ def SMM(input, dfa): ...@@ -452,7 +469,9 @@ def SMM(input, dfa):
if (state in dfa.accept): if (state in dfa.accept):
scanned.append(Token(state, seenInput)) scanned.append(Token(state, seenInput))
else: else:
return (None, ord(input[0])) if input:
m = ord(input[0])
return (None, m)
return (scanned, "success") return (scanned, "success")
......
...@@ -160,7 +160,7 @@ primaryNoArrayAccess ...@@ -160,7 +160,7 @@ primaryNoArrayAccess
arrayID arrayID
methodOrFieldID methodOrFieldID
start start
203 207
start BOF packageDcl importDcls topDcls EOF start BOF packageDcl importDcls topDcls EOF
packageDcl PACKAGE name SEMICO packageDcl PACKAGE name SEMICO
packageDcl PACKAGE ID SEMICO packageDcl PACKAGE ID SEMICO
...@@ -295,9 +295,9 @@ arrayCreationExpr NEW name LSQRBRACK RSQRBRACK ...@@ -295,9 +295,9 @@ arrayCreationExpr NEW name LSQRBRACK RSQRBRACK
arrayCreationExpr NEW ID LSQRBRACK RSQRBRACK arrayCreationExpr NEW ID LSQRBRACK RSQRBRACK
primary arrayAccess primary arrayAccess
primary primaryNoArrayAccess primary primaryNoArrayAccess
primaryNoArrayAccess literal methodOrFieldInvocs primaryNoArrayAccess literal
primaryNoArrayAccess LPAREN expr RPAREN primaryNoArrayAccess LPAREN expr RPAREN
primaryNoArrayAccess classInstanceCreate methodOrFieldInvocs primaryNoArrayAccess classInstanceCreate
primaryNoArrayAccess fieldAccess primaryNoArrayAccess fieldAccess
primaryNoArrayAccess methodInvoc primaryNoArrayAccess methodInvoc
classInstanceCreate unqualCreate classInstanceCreate unqualCreate
...@@ -311,9 +311,10 @@ methodOrFieldInvocs PERIOD methodOrFieldInvoc methodOrFieldInvocs ...@@ -311,9 +311,10 @@ methodOrFieldInvocs PERIOD methodOrFieldInvoc methodOrFieldInvocs
methodOrFieldInvoc methodInvoc methodOrFieldInvoc methodInvoc
methodOrFieldInvoc fieldInvoc methodOrFieldInvoc fieldInvoc
fieldInvoc methodOrFieldID fieldInvoc methodOrFieldID
methodInvoc methodOrFieldID LPAREN args RPAREN methodInvoc primary PERIOD ID LPAREN args RPAREN
methodInvoc ID PERIOD ID LPAREN args RPAREN
methodInvoc name LPAREN args RPAREN
methodOrFieldID ID methodOrFieldID ID
methodOrFieldID name
literal LITERALBOOL literal LITERALBOOL
literal LITERALCHAR literal LITERALCHAR
literal LITERALSTRING literal LITERALSTRING
...@@ -325,6 +326,7 @@ expr condOrExpr ...@@ -325,6 +326,7 @@ expr condOrExpr
assignment leftHandSide ASSIGN expr assignment leftHandSide ASSIGN expr
leftHandSide fieldAccess leftHandSide fieldAccess
leftHandSide arrayAccess leftHandSide arrayAccess
fieldAccess primary PERIOD ID
condOrExpr condAndrExpr condOrExpr condAndrExpr
condOrExpr condOrExpr OR condAndrExpr condOrExpr condOrExpr OR condAndrExpr
condAndrExpr inclusiveOrExpr condAndrExpr inclusiveOrExpr
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment