示例#1
0
文件: parser.py 项目: ryanmp/cs480
def parser(x):
	scanner_out = scanner(x)
	if (scanner_out[1]):
		parser_in = scanner_out[0]
		parser_out = T(parser_in)
		return parser_out
	else:
		print chr(92) + " scanner_failed" 
示例#2
0
def scan():
	host = 'vulnweb.com'
	results = {}

	# creating thread for different scan settings

	ack_scan = threading.Thread(target=scanner('-sA -F', host, results))
	syn_scan = threading.Thread(target=scanner('-sS -F', host, results))
	xmass_scan = threading.Thread(target=scanner('-sX -F', host, results))
	null_scan = threading.Thread(target=scanner('-sN -F', host, results))

	ack_scan.start()
	syn_scan.start()
	xmass_scan.start()
	null_scan.start()

	return jsonify(results)
示例#3
0
 def test_real_numbers(self):
     _input = "1.2345 12345.0 .1234 0.1234"
     expected_tokens = [
                        ('real_number', '1.2345'),
                        ('real_number', '12345.0'),
                        ('real_number', '.1234'),
                        ('real_number', '0.1234')]
     actual_tokens = scanner(_input)
     self.assertEqual(expected_tokens, actual_tokens[0])    
示例#4
0
 def test_constant_string(self):
     _input = '[stdout "hello world !@#$%^&*()[]"]'
     expected_tokens = [
                        ('bracket-l','['),
                        ('keyword','stdout'),
                        ('string', 'hello world !@#$%^&*()[]'),
                        ('bracket-r',']')]
     actual_tokens = scanner(_input)
     self.assertEqual(expected_tokens, actual_tokens[0])
示例#5
0
 def test_unary_operators(self):
     _input = '[sin x]'
     expected_tokens = [('bracket-l','['),
                    ('trig_op','sin'),
                    ('ID','x'),
                    ('bracket-r',']')]
     actual_tokens = scanner(_input)
     self.assertEqual(expected_tokens, actual_tokens[0])
                        
     expected_output = [()]
示例#6
0
 def test_comment_lines(self):
     # Arrange
     _input = "// this is a comment line "
     
     # Act
     expected_tokens = []
     actual_tokens = scanner(_input)
     
     # Assert
     self.assertEqual(expected_tokens, actual_tokens[0])
示例#7
0
文件: generator.py 项目: ryanmp/cs480
def test(ts):
	test_results = []
	for t in ts:
		scanner_out = scanner(t)
		parser_out = parser(t)

		if parser_out:
			parse_tree = parser_out[1]
			#print_tree(parse_tree)
			gforth_code = generator2(parse_tree)
			print t, '  ->  ', gforth_code
		else:
			print 'parsing failed on: ',t
示例#8
0
 def test_binary_expressions(self):
     _input = '[+ 1 [* 2 3]]'
     expected_tokens = [('bracket-l','['),
                    ('arithmatic_op','+'),
                    ('int_number','1'),
                    ('bracket-l','['),
                    ('arithmatic_op','*'),
                    ('int_number','2'),
                    ('int_number','3'),
                    ('bracket-r',']'),
                    ('bracket-r',']')]
     actual_tokens = scanner(_input)
     self.assertEqual(expected_tokens, actual_tokens[0])
示例#9
0
    def __init__(self):
        self.directory = ''
		# load design
        super(GUIMain, self).__init__()
        uic.loadUi('gui/settings.ui', self)
        self.show()
        ui1 = scanner()
        ui2 = raw_plt()
        ui3 = onlineTest()
        ui4 = credits()
		# add slots
        self.scannerButton.clicked.connect(self.scannerButton_clicked)
        self.plotButton.clicked.connect(self.plotButton_clicked)
        self.onlineTestButton.clicked.connect(self.onlineTestButton_clicked)
        self.creditsButton.clicked.connect(self.creditsButton_clicked)
示例#10
0
文件: parser.py 项目: ryanmp/cs480
def parser(x):
	#print "scanning the following:"
	#print x, '\n'
	scanner_out = scanner(x)

	#print "list of tokens:"
	#print scanner_out[0], '\n'

	if (scanner_out[1]):
		#print "parsing..."
		parser_in = scanner_out[0]
		parser_out = T(parser_in)
		return parser_out

	else:
		print chr(92) + " scanner_failed" 
示例#11
0
文件: parser.py 项目: ryanmp/cs480
def parser(x):
	#print "scanning the following:"
	#print x, '\n'
	scanner_out = scanner(x)

	if ("-t" in user_options):
		print "list of tokens:"
		for token in scanner_out[0]:
			print '\t',token

	if (scanner_out[1]):
		#print "parsing..."
		parser_in = scanner_out[0]
		parser_out = T(parser_in,derivation)
		return parser_out

	else:
		return "scanner_failed" 
示例#12
0
 def test_identifiers_vs_keywords(self):
     _input = '[let [[a int][b real]]]'
     expected_tokens = [
                        ('bracket-l','['),
                        ('keyword','let'),
                        ('bracket-l','['),
                        ('bracket-l','['),
                        ('ID','a'),
                        ('keyword','int'),
                        ('bracket-r',']'),
                        ('bracket-l','['),
                        ('ID','b'),
                        ('keyword','real'),
                        ('bracket-r',']'),
                        ('bracket-r',']'),
                        ('bracket-r',']'),
                        ]
     actual_tokens = scanner(_input)
     self.assertEqual(expected_tokens, actual_tokens[0])
示例#13
0
 def test_keywords_only(self):
     # Arrange
     _input = "bool let real string stdout int if while"
     
     # Act
     expected_tokens = [
         ('keyword', 'bool'), 
         ('keyword', 'let'), 
         ('keyword', 'real'), 
         ('keyword', 'string'), 
         ('keyword', 'stdout'), 
         ('keyword', 'int'), 
         ('keyword', 'if'), 
         ('keyword', 'while')]
     
     actual_tokens = scanner(_input)
     
     # Assert
     self.assertEqual(expected_tokens, actual_tokens[0])
示例#14
0
 def test_assignment_operator(self):
     _input = '[:= x 123][:= y 1.23][:= z .123]'
     expected_tokens = [
                        ('bracket-l','['),
                        ('assignment_op',''),
                        ('ID','x'),
                        ('int_number','123'),
                        ('bracket-r',']'),
                        
                        ('bracket-l','['),
                        ('assignment_op',''),
                        ('ID','y'),
                        ('real_number','1.23'),
                        ('bracket-r',']'),
                        
                        ('bracket-l','['),
                        ('assignment_op',''),
                        ('ID','z'),
                        ('real_number','.123'),
                        ('bracket-r',']'),
                        ]
     actual_tokens = scanner(_input)
     self.assertEqual(expected_tokens, actual_tokens[0])
示例#15
0
 def scannerButton_clicked(self):
     self.scanner = scanner()
示例#16
0
            else:
                return False

    def parse(self):

        if(self.program()!=False):
            f = open('output.txt', 'a')
            f.write('\n' + "program found")
            f.close()
            self.g.view()
            return True

f = open('Input.txt', 'r')
text=f.read()
f.close()
s=scanner(text)

parse_input=s.scan()
print(parse_input)
p =parser(parse_input)

p.parse()








digit = "0123456789"
digit = character(digit)

tab = chr(9)
tab = character(tab)

eol = chr(10)
eol = character(eol)
#tokens
ident = letter + " ((" + letter + "|" + digit + ")*)"
number = digit + " ((" + digit + ")*)"
automata_keyword = [ident]
automata = [number]
charss = [chr(9), chr(10)]
scanner(keywords, automata, automata_keyword, charss)


def Expr():
    while (True):
        Stat("")
    get(".")

    return result


def Stat():
    value = 0
    value = input()
    value = Factor(value)
示例#18
0
 def printoutput(self):
     prog = self.input.toPlainText()
     print(prog)
     result = scanner(prog)
     self.textEdit.setPlainText(result)
示例#19
0
文件: test.py 项目: Cnlouds/playweb
         O = eval(util.decode_str(r['data'], NODE_KEY))
         break
     time.sleep(1)
 O['debug'] = NODE_DEBUG
 util.msg("[Project] Target:%s  Time:%s Module:%s  Thread:%s" % (O['target'], util.date(O['start_time']), O['module'], O['thread']), 1)
 O['target'] = "w"
 O['key'] = NODE_KEY
 #O['depth'] = 5  # notice
 O['server_url'] = SERVER + "?m=node&a="
 O['web-ports'] = util.csv2array(O['web-ports'])
 O['app-ports'] = util.csv2array(O['app-ports'])
 O['file-ext'] = util.csv2array(O['file-ext'])
 O['module'] = util.csv2array(O['module'])
 g.config(O)
 # print g.O
 info = scanner()
 urls = []
 if info['web']:
     target = Url("http://" + O['target'])
     crawler = Crawler(target)
     crawler.parse(GetRequest(target))
     urls.append(crawler)
 
 module = {}
 module_list = ["sqli", "xss"]
 task_queue = Queue.Queue()
 for item, target in  itertools.product(module_list, urls):
     module[item] = __import__(item)
     for request in target.requests:
         task_queue.put({"module":item, "request":request})
         
示例#20
0
 def test_positive_exponent(self):
     _input = "1.0e3 1.123e123"
     expected_output = [('real_number', '1.0e3'),
                        ('real_number', '1.123e123')]
     actual_output = scanner(_input)
     self.assertEqual(expected_output, actual_output[0])
示例#21
0
 def test_invalid_exponent(self):
     _input = "1.0e 1"
     expected_output = []
     actual_output = scanner(_input)
     self.assertEqual(expected_output, actual_output[0])
示例#22
0
 def test_possible_invalid_string_constants(self):
     _input = '"hello world'
     expected_output = []
     actual_output = scanner(_input)
     self.assertEqual(expected_output, actual_output[0])
示例#23
0
 def test_possible_invalid_identifier_name(self):
     _input = '2varName'
     expected_output = [('int_number', '2'), ('ID', 'varName')]
     actual_output = scanner(_input)
     self.assertEqual(expected_output, actual_output[0])
示例#24
0
def main():
    
    TNT = "{};,ia=+*()x-#PLVSXYZ"
    M = [[2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0],
       [0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0],
       [0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,3,4,0,0,0,0],
       [0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,0,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0],
       [0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0],
       [0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,0,-4,-4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,0,-3,-3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,0,0,0,19,0,0,0,0,17,0,20,18,0,0,0,0,0,14,15,16],
       [0,-5,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0],
       [0,-7,0,0,0,0,0,-7,22,0,-7,0,0,0,0,0,0,0,0,0,0],
       [0,-9,0,0,0,0,0,-9,-9,0,-9,0,0,0,0,0,0,0,0,0,0],
       [0,0,0,0,19,0,0,0,0,17,0,20,18,0,0,0,0,0,23,15,16],
       [0,0,0,0,19,0,0,0,0,17,0,20,18,0,0,0,0,0,0,0,24],
       [0,-12,0,0,0,0,0,-12,-12,0,-12,0,0,0,0,0,0,0,0,0,0],
       [0,-13,0,0,0,0,0,-13,-13,0,-13,0,0,0,0,0,0,0,0,0,0],
       [0,0,0,0,19,0,0,0,0,17,0,20,18,0,0,0,0,0,0,25,16],
       [0,0,0,0,19,0,0,0,0,17,0,20,18,0,0,0,0,0,0,0,26],
       [0,0,0,0,0,0,0,21,0,0,27,0,0,0,0,0,0,0,0,0,0],
       [0,-11,0,0,0,0,0,-11,-11,0,-11,0,0,0,0,0,0,0,0,0,0],
       [0,-6,0,0,0,0,0,-6,22,0,-6,0,0,0,0,0,0,0,0,0,0],
       [0,-8,0,0,0,0,0,-8,-8,0,-8,0,0,0,0,0,0,0,0,0,0],
       [0,-10,0,0,0,0,0,-10,-10,0,-10,0,0,0,0,0,0,0,0,0,0]]
    p = ["P'->P",
        "P->{L}",
        "L->V;S",
        "V->V,i",
        "V->ai",
        "S->i=X",
        "X->X+T",
        "X->Y",
        "Y->Y*Z",
        "Y->Z",
        "Z->(E)",
        "Z->-Z",
        "Z->i",
        "Z->x"]
    LIN = len(M)
    PRO_NUM = len(p)
    state = [0]*50
    top = 0
    symbol = ['#']*50
    global i
    code,value = '',''
    Buf = pretreatment()
    
    while(Buf[i] == ' '):
        i += 1
    
    code,value,i = scanner(Buf,i)
    
    j = 0
    print 'step','\t\t\t\t','状态栈','\t\t\t','    ','符号栈','\t\t\t','  ','输入串首字符'
    while(1):
        print j,')','\t\t\t\t',
        j += 1
        state_str = ''
        for x in range(top+1):
            state_str += str(state[x])
        print  state_str,' '*(20-len(state_str)),
        print '\t\t',
        symbol_str = ''
        for y in range(top+1):
            symbol_str += str(symbol[y])
        print symbol_str,' '*(10-len(symbol_str)),
        print '\t\t\t',code
        action = M[state[top]][col(code,TNT)]
        if(action >= 1 and action < LIN):
            top += 1
            state[top] = action
            symbol[top] = code
            while(Buf[i] == ' '):
                i += 1
            code,value,i = scanner(Buf,i)
        elif action > -PRO_NUM and action <= -1:
            top -= len(p[-action]) -3
            state[top+1] = M[state[top]][col(p[-action][0],TNT)]
            top += 1
            symbol[top] = p[-action][0]
        elif action == 99:
            print '\t\t\t\t','Acc'
            break
        else:
            print 'Err in main->',action
            break
示例#25
0
 def test_3_scan_FOUND(self):
     self.scannerobj = scanner('.', ['TODO1:'], ['reports'])
     self.assertGreater(len(self.scannerobj.scan()), 0)
示例#26
0
 def setUp(self):
     self.scannerobj = scanner('.', ignorelist=['reports'])
示例#27
0
 def parse(self):
     #scanner is used with the parser
     testScan = scanner("sclTest.scl")
     testScan.scanning()
示例#28
0
        time.sleep(1)
    O['debug'] = NODE_DEBUG
    util.msg(
        "[Project] Target:%s  Time:%s Module:%s  Thread:%s" %
        (O['target'], util.date(O['start_time']), O['module'], O['thread']), 1)
    O['target'] = "w"
    O['key'] = NODE_KEY
    #O['depth'] = 5  # notice
    O['server_url'] = SERVER + "?m=node&a="
    O['web-ports'] = util.csv2array(O['web-ports'])
    O['app-ports'] = util.csv2array(O['app-ports'])
    O['file-ext'] = util.csv2array(O['file-ext'])
    O['module'] = util.csv2array(O['module'])
    g.config(O)
    # print g.O
    info = scanner()
    urls = []
    if info['web']:
        target = Url("http://" + O['target'])
        crawler = Crawler(target)
        crawler.parse(GetRequest(target))
        urls.append(crawler)

    module = {}
    module_list = ["sqli", "xss"]
    task_queue = Queue.Queue()
    for item, target in itertools.product(module_list, urls):
        module[item] = __import__(item)
        for request in target.requests:
            task_queue.put({"module": item, "request": request})
示例#29
0
from scanner import *

scan = scanner('192992', '7172')
scan.scan_fun()
示例#30
0
                f"Error: Invalid display statement syntax. Unexpected token {display_token(tokens[index + 1])}"
            )

    # function to read in the end function statement of the scl program. If the token is a keyword, then it is recognized as an end function statement.
    def endfunc_stmt(index):
        if tokens[index + 1].Toktype == "keyword":
            print("<endfunct> ->", tokens[32].word, "-> <function_main> ->",
                  tokens[33].word)
            return index + 2
        else:
            print(
                f"Error: Invalid end statement syntax. Unexpected token {display_token(tokens[index + 1])}"
            )


p = parser(scanner("sclTest.scl"))
p.parse()

# index used to parse through the tokens list and used along with the functions in the parser class
index = 0
while index < len(tokens):
    # check for the first token in the tokens list. If it is "import", then it'll check the import statement function to determine if it's recognized
    if tokens[index].word == "import":
        index = parser.import_stmt(index)
        continue
    # check if the next line is implementations
    if tokens[index].word == "implementations":
        index = (parser.implement_stmt(index))
        continue
    # check for the first word of the line and if it's "function", then it'll check the function statement function to determine if it's recognized
    if tokens[index].word == "function":