I am writing lex for a specific language where operations are carried out in prefix notation :
(+ a b) --> (a + b)
An integer is defined as follows : An integer can have a negative sign (–) but no positive sign. It can be with or without space(s) between the sign and the digits. If the value is 0, only a single digit 0 is allowed. Otherwise, it is the same as common integer definitions (no leading 0’s).
Order of expressions in the lex is as follows ( first match rule) :
- Regex for integer :
[\-]?[ ]*((0)|([1-9][0-9]*))
- Regex for subtraction operator :
"-"
With these definitions, I would like to parse the string - 5 3
ie. (5-3)
Current output
Integer : - 5,
Integer : 3
Desired output:
Operator : '-'
Integer : 5
Integer : 3
-
as a unary operator? And is your language Lisp-like in that expressions must be parenthesized, or can you write+ + 1 2 3
? – Winou-
is not a unary operator. It is a simple language for now, so I dont think I will be encountering+ + 1 2 3
like expressions. – Helix( - 5)
is not valid. In that case, the-
which follows a(
is always an operator and the-
which follows an operator or a value must be part of an integer. If those assumptions are not correct, then it's going to be a bit tricky. – Winou* - 5 - 3 1
could be(* (-5) (- 3 1))
or(* (- 5 (- 3)) 1)
– Winou