mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-07 02:02:51 -06:00
regex patterns for tokens
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
-- This Happy file was machine-generated by the BNF converter
|
||||
{
|
||||
module GF.Source.ParGF where -- H
|
||||
import GF.Source.AbsGF -- H
|
||||
import GF.Source.LexGF -- H
|
||||
import GF.Infra.Ident -- H
|
||||
import GF.Data.ErrM -- H
|
||||
module ParGF where
|
||||
import AbsGF
|
||||
import LexGF
|
||||
import ErrM
|
||||
}
|
||||
|
||||
%name pGrammar Grammar
|
||||
@@ -29,6 +28,7 @@ import GF.Data.ErrM -- H
|
||||
',' { PT _ (TS ",") }
|
||||
'[' { PT _ (TS "[") }
|
||||
']' { PT _ (TS "]") }
|
||||
'-' { PT _ (TS "-") }
|
||||
'.' { PT _ (TS ".") }
|
||||
'|' { PT _ (TS "|") }
|
||||
'%' { PT _ (TS "%") }
|
||||
@@ -38,14 +38,13 @@ import GF.Data.ErrM -- H
|
||||
'@' { PT _ (TS "@") }
|
||||
'!' { PT _ (TS "!") }
|
||||
'*' { PT _ (TS "*") }
|
||||
'+' { PT _ (TS "+") }
|
||||
'++' { PT _ (TS "++") }
|
||||
'\\' { PT _ (TS "\\") }
|
||||
'=>' { PT _ (TS "=>") }
|
||||
'++' { PT _ (TS "++") }
|
||||
'+' { PT _ (TS "+") }
|
||||
'_' { PT _ (TS "_") }
|
||||
'$' { PT _ (TS "$") }
|
||||
'/' { PT _ (TS "/") }
|
||||
'-' { PT _ (TS "-") }
|
||||
'Lin' { PT _ (TS "Lin") }
|
||||
'PType' { PT _ (TS "PType") }
|
||||
'Str' { PT _ (TS "Str") }
|
||||
@@ -96,15 +95,17 @@ import GF.Data.ErrM -- H
|
||||
L_ident { PT _ (TV $$) }
|
||||
L_integ { PT _ (TI $$) }
|
||||
L_quoted { PT _ (TL $$) }
|
||||
L_doubl { PT _ (TD $$) }
|
||||
L_LString { PT _ (T_LString $$) }
|
||||
L_err { _ }
|
||||
|
||||
|
||||
%%
|
||||
|
||||
Ident :: { Ident } : L_ident { identC $1 } -- H
|
||||
Ident :: { Ident } : L_ident { Ident $1 }
|
||||
Integer :: { Integer } : L_integ { (read $1) :: Integer }
|
||||
String :: { String } : L_quoted { $1 }
|
||||
Double :: { Double } : L_doubl { (read $1) :: Double }
|
||||
LString :: { LString} : L_LString { LString ($1)}
|
||||
|
||||
Grammar :: { Grammar }
|
||||
@@ -158,7 +159,7 @@ ModType : 'abstract' Ident { MTAbstract $2 }
|
||||
ModBody :: { ModBody }
|
||||
ModBody : Extend Opens '{' ListTopDef '}' { MBody $1 $2 (reverse $4) }
|
||||
| Ident 'with' ListOpen { MWith $1 $3 }
|
||||
| ListIdent '**' Ident 'with' ListOpen { MWithE $1 $3 $5 }
|
||||
| ListIncluded '**' Ident 'with' ListOpen { MWithE $1 $3 $5 }
|
||||
| 'reuse' Ident { MReuse $2 }
|
||||
| 'union' ListIncluded { MUnion $2 }
|
||||
|
||||
@@ -169,7 +170,7 @@ ListTopDef : {- empty -} { [] }
|
||||
|
||||
|
||||
Extend :: { Extend }
|
||||
Extend : ListIdent '**' { Ext $1 }
|
||||
Extend : ListIncluded '**' { Ext $1 }
|
||||
| {- empty -} { NoExt }
|
||||
|
||||
|
||||
@@ -210,6 +211,7 @@ ListIncluded : {- empty -} { [] }
|
||||
Included :: { Included }
|
||||
Included : Ident { IAll $1 }
|
||||
| Ident '[' ListIdent ']' { ISome $1 $3 }
|
||||
| Ident '-' '[' ListIdent ']' { IMinus $1 $4 }
|
||||
|
||||
|
||||
Def :: { Def }
|
||||
@@ -353,13 +355,14 @@ ListLocDef : {- empty -} { [] }
|
||||
| LocDef ';' ListLocDef { (:) $1 $3 }
|
||||
|
||||
|
||||
Exp4 :: { Exp }
|
||||
Exp4 : Ident { EIdent $1 }
|
||||
Exp6 :: { Exp }
|
||||
Exp6 : Ident { EIdent $1 }
|
||||
| '{' Ident '}' { EConstr $2 }
|
||||
| '%' Ident '%' { ECons $2 }
|
||||
| Sort { ESort $1 }
|
||||
| String { EString $1 }
|
||||
| Integer { EInt $1 }
|
||||
| Double { EFloat $1 }
|
||||
| '?' { EMeta }
|
||||
| '[' ']' { EEmpty }
|
||||
| 'data' { EData }
|
||||
@@ -373,48 +376,57 @@ Exp4 : Ident { EIdent $1 }
|
||||
| LString { ELString $1 }
|
||||
|
||||
|
||||
Exp3 :: { Exp }
|
||||
Exp3 : Exp3 '.' Label { EProj $1 $3 }
|
||||
Exp5 :: { Exp }
|
||||
Exp5 : Exp5 '.' Label { EProj $1 $3 }
|
||||
| '{' Ident '.' Ident '}' { EQConstr $2 $4 }
|
||||
| '%' Ident '.' Ident '%' { EQCons $2 $4 }
|
||||
| Exp4 { $1 }
|
||||
| '%' Ident '.' Ident { EQCons $2 $4 }
|
||||
| Exp6 { $1 }
|
||||
|
||||
|
||||
Exp2 :: { Exp }
|
||||
Exp2 : Exp2 Exp3 { EApp $1 $2 }
|
||||
Exp4 :: { Exp }
|
||||
Exp4 : Exp4 Exp5 { EApp $1 $2 }
|
||||
| 'table' '{' ListCase '}' { ETable $3 }
|
||||
| 'table' Exp4 '{' ListCase '}' { ETTable $2 $4 }
|
||||
| 'table' Exp4 '[' ListExp ']' { EVTable $2 $4 }
|
||||
| 'table' Exp6 '{' ListCase '}' { ETTable $2 $4 }
|
||||
| 'table' Exp6 '[' ListExp ']' { EVTable $2 $4 }
|
||||
| 'case' Exp 'of' '{' ListCase '}' { ECase $2 $5 }
|
||||
| 'variants' '{' ListExp '}' { EVariants $3 }
|
||||
| 'pre' '{' Exp ';' ListAltern '}' { EPre $3 $5 }
|
||||
| 'strs' '{' ListExp '}' { EStrs $3 }
|
||||
| Ident '@' Exp4 { EConAt $1 $3 }
|
||||
| Exp3 { $1 }
|
||||
| Ident '@' Exp6 { EConAt $1 $3 }
|
||||
| Exp5 { $1 }
|
||||
| 'Lin' Ident { ELin $2 }
|
||||
|
||||
|
||||
Exp3 :: { Exp }
|
||||
Exp3 : Exp3 '!' Exp4 { ESelect $1 $3 }
|
||||
| Exp3 '*' Exp4 { ETupTyp $1 $3 }
|
||||
| Exp3 '**' Exp4 { EExtend $1 $3 }
|
||||
| Exp4 { $1 }
|
||||
|
||||
|
||||
Exp1 :: { Exp }
|
||||
Exp1 : Exp1 '!' Exp2 { ESelect $1 $3 }
|
||||
| Exp1 '*' Exp2 { ETupTyp $1 $3 }
|
||||
| Exp1 '**' Exp2 { EExtend $1 $3 }
|
||||
Exp1 : Exp2 '+' Exp1 { EGlue $1 $3 }
|
||||
| Exp2 { $1 }
|
||||
|
||||
|
||||
Exp :: { Exp }
|
||||
Exp : '\\' ListBind '->' Exp { EAbstr $2 $4 }
|
||||
Exp : Exp1 '++' Exp { EConcat $1 $3 }
|
||||
| '\\' ListBind '->' Exp { EAbstr $2 $4 }
|
||||
| '\\' '\\' ListBind '=>' Exp { ECTable $3 $5 }
|
||||
| Decl '->' Exp { EProd $1 $3 }
|
||||
| Exp1 '=>' Exp { ETType $1 $3 }
|
||||
| Exp1 '++' Exp { EConcat $1 $3 }
|
||||
| Exp1 '+' Exp { EGlue $1 $3 }
|
||||
| Exp3 '=>' Exp { ETType $1 $3 }
|
||||
| 'let' '{' ListLocDef '}' 'in' Exp { ELet $3 $6 }
|
||||
| 'let' ListLocDef 'in' Exp { ELetb $2 $4 }
|
||||
| Exp1 'where' '{' ListLocDef '}' { EWhere $1 $4 }
|
||||
| Exp3 'where' '{' ListLocDef '}' { EWhere $1 $4 }
|
||||
| 'fn' '{' ListEquation '}' { EEqs $3 }
|
||||
| 'in' Exp5 String { EExample $2 $3 }
|
||||
| Exp1 { $1 }
|
||||
|
||||
|
||||
Exp2 :: { Exp }
|
||||
Exp2 : Exp3 { $1 }
|
||||
|
||||
|
||||
ListExp :: { [Exp] }
|
||||
ListExp : {- empty -} { [] }
|
||||
| Exp { (:[]) $1 }
|
||||
@@ -423,24 +435,33 @@ ListExp : {- empty -} { [] }
|
||||
|
||||
Exps :: { Exps }
|
||||
Exps : {- empty -} { NilExp }
|
||||
| Exp4 Exps { ConsExp $1 $2 }
|
||||
| Exp6 Exps { ConsExp $1 $2 }
|
||||
|
||||
|
||||
Patt1 :: { Patt }
|
||||
Patt1 : '_' { PW }
|
||||
Patt2 :: { Patt }
|
||||
Patt2 : '_' { PW }
|
||||
| Ident { PV $1 }
|
||||
| '{' Ident '}' { PCon $2 }
|
||||
| Ident '.' Ident { PQ $1 $3 }
|
||||
| Integer { PInt $1 }
|
||||
| Double { PFloat $1 }
|
||||
| String { PStr $1 }
|
||||
| '{' ListPattAss '}' { PR $2 }
|
||||
| '<' ListPattTupleComp '>' { PTup $2 }
|
||||
| '(' Patt ')' { $2 }
|
||||
|
||||
|
||||
Patt :: { Patt }
|
||||
Patt : Ident ListPatt { PC $1 $2 }
|
||||
Patt1 :: { Patt }
|
||||
Patt1 : Ident ListPatt { PC $1 $2 }
|
||||
| Ident '.' Ident ListPatt { PQC $1 $3 $4 }
|
||||
| Patt2 '*' { PRep $1 }
|
||||
| Ident '@' Patt2 { PAs $1 $3 }
|
||||
| Patt2 { $1 }
|
||||
|
||||
|
||||
Patt :: { Patt }
|
||||
Patt : Patt '|' Patt1 { PDisj $1 $3 }
|
||||
| Patt '+' Patt1 { PSeq $1 $3 }
|
||||
| Patt1 { $1 }
|
||||
|
||||
|
||||
@@ -467,18 +488,9 @@ ListPattAss : {- empty -} { [] }
|
||||
| PattAss ';' ListPattAss { (:) $1 $3 }
|
||||
|
||||
|
||||
PattAlt :: { PattAlt }
|
||||
PattAlt : Patt { AltP $1 }
|
||||
|
||||
|
||||
ListPatt :: { [Patt] }
|
||||
ListPatt : Patt1 { (:[]) $1 }
|
||||
| Patt1 ListPatt { (:) $1 $2 }
|
||||
|
||||
|
||||
ListPattAlt :: { [PattAlt] }
|
||||
ListPattAlt : PattAlt { (:[]) $1 }
|
||||
| PattAlt '|' ListPattAlt { (:) $1 $3 }
|
||||
ListPatt : Patt2 { (:[]) $1 }
|
||||
| Patt2 ListPatt { (:) $1 $2 }
|
||||
|
||||
|
||||
Bind :: { Bind }
|
||||
@@ -494,7 +506,7 @@ ListBind : {- empty -} { [] }
|
||||
|
||||
Decl :: { Decl }
|
||||
Decl : '(' ListBind ':' Exp ')' { DDec $2 $4 }
|
||||
| Exp2 { DExp $1 }
|
||||
| Exp4 { DExp $1 }
|
||||
|
||||
|
||||
TupleComp :: { TupleComp }
|
||||
@@ -518,7 +530,7 @@ ListPattTupleComp : {- empty -} { [] }
|
||||
|
||||
|
||||
Case :: { Case }
|
||||
Case : ListPattAlt '=>' Exp { Case $1 $3 }
|
||||
Case : Patt '=>' Exp { Case $1 $3 }
|
||||
|
||||
|
||||
ListCase :: { [Case] }
|
||||
@@ -548,7 +560,7 @@ ListAltern : {- empty -} { [] }
|
||||
|
||||
DDecl :: { DDecl }
|
||||
DDecl : '(' ListBind ':' Exp ')' { DDDec $2 $4 }
|
||||
| Exp4 { DDExp $1 }
|
||||
| Exp6 { DDExp $1 }
|
||||
|
||||
|
||||
ListDDecl :: { [DDecl] }
|
||||
|
||||
Reference in New Issue
Block a user