-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparser.py
More file actions
35 lines (30 loc) · 1.83 KB
/
parser.py
File metadata and controls
35 lines (30 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from tokenizer import Tokenizer
from syntax_analysis import SyntaxAnalysis
import argparse
from token import Token
parser = argparse.ArgumentParser(description="Parser of basicDTD language")
parser.add_argument('--input', help='text to be parsed in single quotes (supports multiple DTD sentences delimited by whitespace)', type=str)
args = parser.parse_args()
input_string = args.input
if input_string:
print "\tYou have specified this as an input: \n" + input_string + '\n'
tokenizer = Tokenizer()
tokens = tokenizer.tokenizeInput(input_string)
tokens.append(Token("EOF", "$"))
analyzer = SyntaxAnalysis()
analyzer.initializeParseTable()
analyzer.analyzeTokens(tokens)
# Sentences examples
#
# OK <!ATTLIST Ahoj bla1_D CDATA #REQUIRED>
# OK <!ELEMENT _ahoj-cau. EMPTY>
# OK <!ATTLIST :merry^Christmas&PF%2017 Santa:Claus NMTOKEN #IMPLIED Jingl_Bells IDREF #REQUIRED>
# OK <!ELEMENT Morho-detvo-mojho-rodu ANY>
# OK <!ELEMENT from (#PCDATA)> <!ATTLIST Ahoj hulahej IDREF #REQUIRED>
# OK <!ELEMENT I_LOVE_FIIT^^ ((or_not?))>
# OK <!ELEMENT Winter.is.coming. (((valar*|dohaeris*)+))>
# OK <!ATTLIST Waar kom (je|u) #FIXED \"vandaan\">
# OK <!ATTLIST Waar kom (je|u) #FIXED \"vandaan :Alstublieft0\">
# OK <!ATTLIST Strc _2_prsty (skrz) #FIXED \"krk\">
# OK <!ELEMENT integer ((bool,string,float)*)>
# "<!ATTLIST Ahoj bla1_D CDATA #REQUIRED> <!ELEMENT Winter.is.coming. (((valar*|dohaeris*)+))> <!ATTLIST Waar kom (je|u) #FIXED \"vandaan :Alstublieft0\"> <!ELEMENT _ahoj-cau. EMPTY> <!ATTLIST :merry^Christmas&PF%2017 Santa:Claus NMTOKEN #IMPLIED Jingl_Bells IDREF #REQUIRED> <!ELEMENT Morho-detvo-mojho-rodu ANY> <!ELEMENT from (#PCDATA)> <!ATTLIST Ahoj hulahej IDREF #REQUIRED> <!ELEMENT I_LOVE_FIIT^^ ((or_not?))> <!ATTLIST Waar kom (je|u) #FIXED \"vandaan\"> <!ATTLIST Strc _2_prsty (skrz) \"krk\"> <!ELEMENT integer ((bool,string,float)*)>"