Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 23390

Python Lex Yacc : Regular Expression Error

$
0
0

I am trying PLY for sentence validation. I take a simple grammar rule.

Sentence -> nouns verbsnouns -> r'[A-Za-z]'verbs -> is|are|am|.. 

When I just set verbs to is|am or am i.e. I keep my choices to detect atmost two types of verbs, PLY throws an error.

My code is

import ply.lex as leximport ply.yacc as yacctokens = ['WORDS','VERBS']def t_WORDS(t):    r'[A-Za-z]+'    passdef t_VERBS(t):    r'(is|are|am)'    pass                                                                                                                                                            t_ignore = ' \t\n'def t_error(t):    print('Lexical error')    t.lexer.skip(1)def p_sentence(p):'sentence : WORDS VERBS'    p[0] = p[1] + p[2]def p_error(p):    print("Error")lexer = lex.lex()parser = yacc.yacc()while True:    sentence = input("Sentence : ")    result = parser.parse(sentence)    print(result)

But when I write

import ply.lex as leximport ply.yacc as yacctokens = ['WORDS','VERBS']def t_WORDS(t):    r'[A-Za-z]+'    passdef t_VERBS(t):    r'(is|are)'    pass                                                                                                                                                            t_ignore = ' \t\n'def t_error(t):    print('Lexical error')    t.lexer.skip(1)def p_sentence(p):'sentence : WORDS VERBS'    p[0] = p[1] + p[2]def p_error(p):    print("Error")lexer = lex.lex()parser = yacc.yacc()while True:    sentence = input("Sentence : ")    result = parser.parse(sentence)    print(result)

The error occurs. I have taken example 'This are' as a sentence. This works fine when is|are|am are defined but not for is|are.

What have I done wrong?


Viewing all articles
Browse latest Browse all 23390

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>