This is about the array descriptor semantics where a series of keywords specifies the information to place into the SV.
Generally, each keyword places a single piece of information into the SV. The resulting SV is a Tcl list (Perl array) with the placed pieces as elements, in the same order as the keywords occurred in the semantics.
L0 semantics
| Key | Meaning | Notes |
|---|---|---|
| g1length | Length of the lexeme in G1 locations | Usually 1 for standard token stream |
| g1start | G1 start location of the lexeme | How to get? Reach forward to G1 engine at time of lexeme creation? |
| length | Length of lexeme in characters (or bytes) | |
| start | Start of lexeme in input stream, as character/byte offset | |
| lhs | G1 symbol (terminal) id of the lexeme | |
| name | G1 symbol (terminal) name of the lexeme | |
| rule | ??? | Undefined for lexemes? |
| symbol | See name |
This identity is specific to lexemes |
| value | Token value (i.e. string) of the lexeme | |
| values | See value |
G1 semantics
| Key | Meaning | Notes |
|---|---|---|
| g1length | Length of matched G1 rule | (marpa_v_es_id()-marpa_v_rule_start_es_id()+1) (length of rhs works only if all tokens are length 1, i.e. standard token stream) |
| g1start | G1 start location of the rule | marpa_v_rule_start_es_id() |
| length | Length of rule in characters/bytes | How to get? |
| start | L0 start location of the rule in chars/bytes | How to get? |
| lhs | G1 lhs symbol id for the rule | Precomputable (map: rule id --> symbol id) |
| name | User-specified rule name, or G1 lhs symbol name | Precomputable (map: rule id --> rule name) |
| rule | G1 rule id | marpa_v_rule() |
| symbol | G1 lhs symbol name | See also name; Precomputable (map: rule id --> lhs name) |
| value | Array of the rule rhs values | |
| values | See value |