-{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
[true,/^\d+[.]\d+/g , TokenKind.Flo],
[true, /^\d+/g, TokenKind.Int],
[true,/^[@]/g, TokenKind.At ],
- [true,/^[_\w][_\d\w]*/g, TokenKind.Id ],
+ [true,/^[_a-zA-Z][_0-9a-zA-Z]*/g, TokenKind.Id ],
[true,/^->/g , TokenKind.RArr ],
[true, /^[;]/g, TokenKind.SColon ],
- [true, /^[(]/g, TokenKind.LPar ],
- [true, /^[)]/g, TokenKind.RPar ],
+ [true, /^\(/g, TokenKind.LPar ],
+ [true, /^\)/g, TokenKind.RPar ],
[true, /^[=]/g, TokenKind.Assign ],
[true, /^([\+\-\*\/]|[!<>=]=)/g, TokenKind.Op ],
[true, /^#[^#]*#/g, TokenKind.Com ],
[true, /^[\\]/g, TokenKind.BSlash ],
[true,/^\"([^"]|[\\\"])*\"/g , TokenKind.Str ],
- [true, /^([^\\]+?)/g, TokenKind.LitStr ],
[true, /^\s+/g, TokenKind.Space],
+ [true, /^([^\\]+?)/g, TokenKind.LitStr ],
]);
/** ignore spaces ,new lines, and comments */
-//const _ = p.opt(p.alt(
-// p.tok(TokenKind.Space),
-// p.tok(TokenKind.Com),
-// )
-//);
+const _ = p.opt(p.alt(
+ p.tok(TokenKind.Space),
+ p.tok(TokenKind.Com),
+ )
+);
+
+function applyArg(value: [p.Token<TokenKind>,
+ p.Token<TokenKind> | undefined,
+ ASTNode,
+ p.Token<TokenKind> | undefined,
+ ASTNode,
+ p.Token<TokenKind> | undefined,
+ p.Token<TokenKind>]): AST[]{
+ let type = value[2];
+ let variable = value[4];
+ return [type, variable];
+}
+
+function applyID(value: p.Token<TokenKind.Id>): ASTNode {
+ // extend value to ASTNode
+ const newNode : ASTNode = {
+ actualValue : value.text ,
+ ...value};
+ return newNode;
+}
function applyInteger(value: p.Token<TokenKind.Int>): ASTNode {
// extend value to ASTNode
/** define all the parser sentence */
const CONST = p.rule<TokenKind, ASTNode>();
-/*const VAR = p.rule<TokenKind, ASTNode>();
-const ARG = p.rule<TokenKind, ASTNode>();
+const VAR = p.rule<TokenKind, ASTNode>();
+const TYPE = p.rule<TokenKind, ASTNode>();
+const ARG = p.rule<TokenKind, AST[]>();
+
+/*
const EXPR = p.rule<TokenKind, AST>();
const LETTING = p.rule<TokenKind, AST>();
const LAMBDA = p.rule<TokenKind, AST>();
const APPLYING = p.rule<TokenKind, AST>(); */
+/** ARG ::= "(" TYPE VAR ")" */
+ARG.setPattern(
+ p.apply(p.seq(
+ p.tok(TokenKind.LPar),
+ _,
+ TYPE,
+ _,
+ VAR,
+ _,
+ p.tok(TokenKind.RPar),
+ ),applyArg)
+);
+
+
+/** VAR ::= ID */
+VAR.setPattern(
+ p.apply(p.tok(TokenKind.Id), applyID),
+);
+/** TYPE ::= ID */
+TYPE.setPattern(
+ p.apply(p.tok(TokenKind.Id), applyID),
+);
+
+/** * CONST ::= FLO | STR | INT */
CONST.setPattern(
p.alt(
p.apply(p.tok(TokenKind.Flo), applyFloat),
);
+// parse the strings
function mainParse(inputStr : string){
return p.expectSingleResult(p.expectEOF(
CONST.parse(tokenizer.parse(inputStr))));
+ // ARG.parse(tokenizer.parse(inputStr))));
}
function main(){
assert.strictEqual(<BigInt>mainParse("123").actualValue, 123n);
assert.strictEqual(<BigInt>mainParse("3.14").actualValue, 3.14);
- assert.strictEqual(<BigInt>mainParse("\"foo\"").actualValue, "foo");
+ assert.strictEqual(<BigInt>mainParse("\"foo\"").actualValue, "foo");
+ //assert.strictEqual(astToSExp(mainParse("( int a )")), "(int a)");
};