diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-15 11:59:15 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-15 11:59:15 +0100 |
| commit | a4d7fb2da6a8390b818dae8d07391c7d76e365e9 (patch) | |
| tree | 166d1ed4bb07337ead19fd4f7ebc8d79885e2cfd /lang | |
| parent | 2eab5877e1c634db872b595dd2414f4031ae4eb5 (diff) | |
parser: hande const declarations
Only symbols are produced, no bytecode is emitted. The constant
expressions are evaluated at compile time using the stdlib package
go/constant. The parser handles implicit repetition of the last
non-empty expression list. The iota symbol is reset to 0 and
incremented for each line of a const block.
To be done in a next commit: type conversions.
Diffstat (limited to 'lang')
| -rw-r--r-- | lang/token.go | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lang/token.go b/lang/token.go index af2fc26..37ac557 100644 --- a/lang/token.go +++ b/lang/token.go @@ -6,10 +6,12 @@ const ( Illegal = iota Comment Ident - Int + + // Literal values + Char Float Imag - Char + Int String // Binary operators (except indicated) @@ -114,6 +116,7 @@ const ( ) func (t TokenId) IsKeyword() bool { return t >= Break && t <= Var } +func (t TokenId) IsLiteral() bool { return t >= Char && t <= String } func (t TokenId) IsOperator() bool { return t >= Add && t <= Tilde } func (t TokenId) IsBlock() bool { return t >= ParenBlock && t <= BraceBlock } func (t TokenId) IsBoolOp() bool { return t >= Equal && t <= NotEqual || t == Not } |
