Поделио токене заграда на две врсте
This commit is contained in:
parent
d2f18f2339
commit
f066c2f221
16
lexer.c
16
lexer.c
|
@ -39,7 +39,7 @@ token *lexLine(char *input)
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
regex_t regNumber, regSymbol, regParenthesis, regSpace;
|
regex_t regNumber, regSymbol, regLParenthesis, regRParenthesis, regSpace;
|
||||||
|
|
||||||
token *lex1Token(char *input, int *i)
|
token *lex1Token(char *input, int *i)
|
||||||
{
|
{
|
||||||
|
@ -50,7 +50,8 @@ token *lex1Token(char *input, int *i)
|
||||||
regcomp(®Number, "^[-+]?[[:digit:]]+", REG_EXTENDED);
|
regcomp(®Number, "^[-+]?[[:digit:]]+", REG_EXTENDED);
|
||||||
regcomp(®Symbol, "^[-+/*]", REG_EXTENDED);
|
regcomp(®Symbol, "^[-+/*]", REG_EXTENDED);
|
||||||
/* за сада подржава само симболе -, +, * и / */
|
/* за сада подржава само симболе -, +, * и / */
|
||||||
regcomp(®Parenthesis, "^[()]", REG_EXTENDED);
|
regcomp(®LParenthesis, "^(", REG_EXTENDED);
|
||||||
|
regcomp(®RParenthesis, "^)", REG_EXTENDED);
|
||||||
|
|
||||||
const int nmatches = 1;
|
const int nmatches = 1;
|
||||||
regmatch_t a[nmatches];
|
regmatch_t a[nmatches];
|
||||||
|
@ -67,9 +68,13 @@ token *lex1Token(char *input, int *i)
|
||||||
{
|
{
|
||||||
result->type = symbolToken;
|
result->type = symbolToken;
|
||||||
}
|
}
|
||||||
else if (!regexec(®Parenthesis, input + *i, nmatches, a, 0))
|
else if (!regexec(®LParenthesis, input + *i, nmatches, a, 0))
|
||||||
{
|
{
|
||||||
result->type = parenthesisToken;
|
result->type = LparenthesisToken;
|
||||||
|
}
|
||||||
|
else if (!regexec(®RParenthesis, input + *i, nmatches, a, 0))
|
||||||
|
{
|
||||||
|
result->type = RparenthesisToken;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -90,7 +95,8 @@ token *lex1Token(char *input, int *i)
|
||||||
regfree(®Space);
|
regfree(®Space);
|
||||||
regfree(®Number);
|
regfree(®Number);
|
||||||
regfree(®Symbol);
|
regfree(®Symbol);
|
||||||
regfree(®Parenthesis);
|
regfree(®LParenthesis);
|
||||||
|
regfree(®RParenthesis);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue