-
Notifications
You must be signed in to change notification settings - Fork 0
/
identifier.py
48 lines (42 loc) · 1.05 KB
/
identifier.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
# -*- coding: utf-8 -*-
'''
--------------------------------------------------------
AUTÔMATO PARA RECONHECER IDENTIFICADORES
--------------------------------------------------------
----------------------------
CÓDIGO ASCII DOS CARACTERES
----------------------------
A...Z = 65...90
a...z = 97...112
0...9 = 48...57
'''
def identifier(fita):
index = 0
tam = len(fita)
'''
ESTADO Q1
Loop enquanto os caracteres forem = {A-Z|a-z|0-9|_}
'''
def q1(fita, index):
while index < tam:
if (
(ord(fita[index]) >= 65 and ord(fita[index]) <= 90)
or (ord(fita[index]) >= 97 and ord(fita[index]) <= 122)
or (ord(fita[index]) >= 48 and ord(fita[index]) <= 57)
):
index = index + 1
else:
return False
return True
'''
ESTADO INICIAL
Verifica se inicia com letras ou _
'''
def q0(fita, index):
if index < tam:
if (ord(fita[index]) >= 65 and ord(fita[index]) <= 90) or (ord(fita[index]) >= 97 and ord(fita[index]) <= 122):
index = index + 1
return q1(fita, index)
return False
return False
return q0(fita, index)