vrtc / pjass (public) (License: BSD) (since 2023-08-03) (hash sha1)
pjass is a free Jass scripting language parser. This repository is a fork of lep/pjass. The goal is to add Debian packaging. As of the time of this writing, it works for current stable, that is Debian 12 (bookworm).
List of commits:
Subject Hash Author Date (UTC)
Changed statement default return type from gNone to gAny. 7a054ad7b62d77ae4a17ac97d913a19675dad111 lep 2015-02-06 15:12:31
Propagate returncheck through statements. b8977b07e11f8fd335851e3a2d69cb473492f85b lep 2015-02-06 15:07:36
Small changes. Removed some unused symbols. 83c8b2b0e6811380bddf6e92e3b2f843370d5e05 lep 2015-02-05 12:43:24
Only put locals into the initialized table. db20d22434506716774fa4e8577f98073f17d6c2 lep 2015-02-04 11:57:00
Changed min function to min makro. b5b6c824896935232743633ae57d060e5c6a046f lep 2015-02-04 11:33:14
Rewrote the hashtable. 55c0f9ae7d284df88c48e7c2ac1c547cda1d802a lep 2015-02-04 11:24:53
Fixed some memory violations. 26a99d799804d8154c4ee1aa0850cdaad909d1ae lep 2015-02-03 23:27:32
Reverted smth. dbd5c217795cf5cd014ed7370655e62591d4d0fe lep 2015-02-03 22:12:49
Changed sprintf to snprintf. 02d6efe2aed9186b2e6189b36a5fa50d2e0c2221 lep 2015-02-03 21:33:05
Wrapped typenode member accesses in getTypePtr. 372c1f9da68a65de9e14dff3881e1758d5e7114b lep 2015-02-03 21:05:11
Added ifdefs for memalign functionality. f005f5e8067994ebd76265e3289e6ab67283b96f lep 2015-02-03 20:06:20
Missing-return check in elseifs should work now. 4274d6166e2c92a4591c1e46a0d71f1579a57c7d lep 2015-02-03 19:35:39
Missing-return checks also checks elseifs. 889122b0fb788663c728127520d0e7124c2a040c lep 2015-02-03 15:18:12
Fixed some more warnings. a5ae36b5299ac419a91592b60b8fcb1dfd8f4374 lep 2015-02-03 13:24:56
Added early exit to editdistance function. 82e8d024392d357d56c833c6b7f7632ffd6830a8 lep 2015-02-02 16:13:40
Unidentified variables are now marked as initialized. f3ef715b90782bc22fbdd29e1c16d7c917f407a9 lep 2015-02-02 13:56:00
Fixed bug in editdistance. a786775b057fc5795db1b2b106b7b9e3c1df6c4c lep 2015-02-02 13:41:15
Added basic uninitialized variable check for locals. c8222a6f68e44a46624c1f9ee781f590522f45f6 lep 2015-02-02 12:41:25
Added git-versionstring. e13ce6d7d90bccd8e18de6d0b01a18ea4501862b lep 2015-02-01 14:56:01
Removed returnsbool-check for Filter/Condition. e26a973fe1fdc1af999633c8d1f29afcbae76f0b lep 2015-02-01 14:51:47
Commit 7a054ad7b62d77ae4a17ac97d913a19675dad111 - Changed statement default return type from gNone to gAny.
Author: lep
Author date (UTC): 2015-02-06 15:12
Committer name: lep
Committer date (UTC): 2015-02-06 15:12
Parent(s): b8977b07e11f8fd335851e3a2d69cb473492f85b
Signer:
Signing key:
Signing status: N
Tree: 8cf00b9a4cb50cb4a27673a97b4b9ef960496176
File Lines added Lines deleted
grammar.y 7 7
File grammar.y changed (mode: 100644) (index 68afdaa..fd085ba)
... ... codeblock: /* empty */ { $$.ty = gEmpty; }
495 495 ; ;
496 496
497 497 statement: NEWLINE { $$.ty = gEmpty; } statement: NEWLINE { $$.ty = gEmpty; }
498 | CALL funccall NEWLINE{ $$.ty = gNone;}
498 | CALL funccall NEWLINE{ $$.ty = gAny;}
499 499 /*1 2 3 4 5 6 7 8 9 */ /*1 2 3 4 5 6 7 8 9 */
500 500 | IF expr THEN NEWLINE codeblock elsifseq elseseq ENDIF NEWLINE { | IF expr THEN NEWLINE codeblock elsifseq elseseq ENDIF NEWLINE {
501 501 canconvert($2.ty, gBoolean, -1); canconvert($2.ty, gBoolean, -1);
 
... ... statement: NEWLINE { $$.ty = gEmpty; }
507 507 yyerrorline(3, lineno - 1, ebuf); yyerrorline(3, lineno - 1, ebuf);
508 508 } }
509 509 canconvert($4.ty, getVariable($2.str)->ty, -1); canconvert($4.ty, getVariable($2.str)->ty, -1);
510 $$.ty = gNone;
510 $$.ty = gAny;
511 511 if (getVariable($2.str)->isconst) { if (getVariable($2.str)->isconst) {
512 512 char ebuf[1024]; char ebuf[1024];
513 513 snprintf(ebuf, 1024, "Cannot assign to constant %s", $2.str); snprintf(ebuf, 1024, "Cannot assign to constant %s", $2.str);
 
... ... statement: NEWLINE { $$.ty = gEmpty; }
521 521 } }
522 522 | SET rid LBRACKET expr RBRACKET EQUALS expr NEWLINE{ | SET rid LBRACKET expr RBRACKET EQUALS expr NEWLINE{
523 523 const struct typeandname *tan = getVariable($2.str); const struct typeandname *tan = getVariable($2.str);
524 $$.ty = gNone;
524 $$.ty = gAny;
525 525 if (tan->ty != gAny) { if (tan->ty != gAny) {
526 526 canconvert($4.ty, gInteger, -1); canconvert($4.ty, gInteger, -1);
527 527 if (!tan->isarray) { if (!tan->isarray) {
 
... ... statement: NEWLINE { $$.ty = gEmpty; }
536 536 } }
537 537 | loopstart NEWLINE codeblock loopend NEWLINE {$$.ty = $3.ty;} | loopstart NEWLINE codeblock loopend NEWLINE {$$.ty = $3.ty;}
538 538 | loopstart NEWLINE codeblock {$$.ty = $3.ty; yyerrorex(0, "Missing endloop");} | loopstart NEWLINE codeblock {$$.ty = $3.ty; yyerrorex(0, "Missing endloop");}
539 | EXITWHEN expr NEWLINE { canconvert($2.ty, gBoolean, -1); if (!inloop) yyerrorline(0, lineno - 1, "Exitwhen outside of loop"); $$.ty = gNone;}
539 | EXITWHEN expr NEWLINE { canconvert($2.ty, gBoolean, -1); if (!inloop) yyerrorline(0, lineno - 1, "Exitwhen outside of loop"); $$.ty = gAny;}
540 540 | RETURN expr NEWLINE { | RETURN expr NEWLINE {
541 541 $$.ty = mkretty($2.ty, 1); $$.ty = mkretty($2.ty, 1);
542 542 if(retval == gNothing) if(retval == gNothing)
 
... ... statement: NEWLINE { $$.ty = gEmpty; }
549 549 yyerrorline(1, lineno - 1, "Return nothing in function that should return value"); yyerrorline(1, lineno - 1, "Return nothing in function that should return value");
550 550 $$.ty = mkretty(gAny, 1); $$.ty = mkretty(gAny, 1);
551 551 } }
552 | DEBUG statement {$$.ty = gNone;}
552 | DEBUG statement {$$.ty = gAny;}
553 553 /*1 2 3 4 5 6 7 */ /*1 2 3 4 5 6 7 */
554 554 | IF expr THEN NEWLINE codeblock elsifseq elseseq { | IF expr THEN NEWLINE codeblock elsifseq elseseq {
555 555 canconvert($2.ty, gBoolean, -1); canconvert($2.ty, gBoolean, -1);
 
... ... statement: NEWLINE { $$.ty = gEmpty; }
561 561 $$.ty = gAny; $$.ty = gAny;
562 562 yyerrorex(0, "Missing then or non valid expression"); yyerrorex(0, "Missing then or non valid expression");
563 563 } }
564 | SET funccall NEWLINE{$$.ty = gNone; yyerrorline(0, lineno - 1, "Call expected instead of set");}
564 | SET funccall NEWLINE{$$.ty = gAny; yyerrorline(0, lineno - 1, "Call expected instead of set");}
565 565 | lvardecl {yyerrorex(0, "Local declaration after first statement");} | lvardecl {yyerrorex(0, "Local declaration after first statement");}
566 | error {$$.ty = gNone; }
566 | error {$$.ty = gAny; }
567 567 ; ;
568 568
569 569 loopstart: LOOP {inloop++;} loopstart: LOOP {inloop++;}
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/pjass

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/pjass

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/pjass

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main