Jump to content

Recommended Posts

Hello Sir, 

While searching for the solution to my problem, I have just gone through some of your old post. 

My name is Alok Arora 

Email id is *snip*

I am writing a code to store logs for each script I run. This I did by using FileWriteLog function and it is successfully storing logs in txt file. 

Now, I have to work on to read the log file and if any script has been mistakenly clicked twice in a day script will pop up a message that task already done for the day by verifying entries in the log file. 

I have the logic for it.. 

I mean a variable will read the log file and will search for the entry and will perform action if entry found or not. 

I believe for reading the file I can write a code like

$i =fileread("logfile.txt")

Now I am stuck on how to compare the log entry in log file. 

Can you please help me in this? 

Edited by Jos
Link to post
Share on other sites
  • Developers

@Alok_Arora,

Seems your memory isn't very good or are you simply ignoring me?
We will help you when you simply provide your script that isn't working so we can understand what you are trying and where it is failing.
Post another post like this, and I will simply ban the account.
Just as a reminder: Sending unsolicited PM's is also against our forum rules!

Jos

Edited by Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By TheDcoder
      Hello, many of you already know I'm working on a new programming language and I need some help to figure out an issue in the parser. I'm posting it here with the hope that someone knowledgeable enough can point out the solution and to also document this issue as I may forget the details if I don't make progress and set it aside.
      Here's the parser:
      /* * This file is part of EasyCodeIt. * * Copyright (C) 2021 TheDcoder <TheDcoder@protonmail.com> * * EasyCodeIt is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ %define parse.trace %code requires { #define _GNU_SOURCE /* Required to enable (v)asprintf */ #include <stdbool.h> #include "parser/tree.h" #include "parser/parser_internal.h" } %union { double num; struct { char *str; size_t len; } str; bool boolean; struct Expression expr; struct ExpressionList expr_list; } %token UNKNOWN %token WS %token NL '\n' %token COMMENT %token DIRECTIVE %token <num> NUMBER %token <str> STRING %token <boolean> BOOL %token <str> WORD %token <str> MACRO %token <str> VARIABLE %token OPERATOR %token BRACKET %token DOT %token COMMA /* Keywords */ %token K_DIM "Dim" %token K_LOCAL "Local" %token K_GLOBAL "Global" %token K_ENUM "Enum" %token K_CONST "Const" %token K_STATIC "Static" %token K_CONTINUE_CASE "ContinueCase" %token K_CONTINUE_LOOP "ContinueLoop" %token K_DEFAULT "Default" %token K_NULL "Null" %token K_DO "Do" %token K_UNTIL "Until" %token K_WHILE "While" %token K_END_WHILE "WEnd" %token K_FOR "For" %token K_IN "In" %token K_TO "To" %token K_STEP "Step" %token K_NEXT "Next" %token K_EXIT "Exit" %token K_EXITLOOP "ExitLoop" %token K_FUNC "Func" %token K_RETURN "Return" %token K_END_FUNC "EndFunc" %token K_IF "If" %token K_ELSE "Else" %token K_ELSE_IF "ElseIf" %token K_END_IF "EndIf" %token K_REDIM "ReDim" %token K_SELECT "Select" %token K_SWITCH "Switch" %token K_CASE "Case" %token K_END_SELECT "EndSelect" %token K_END_SWITCH "EndSwitch" /* Operators */ %precedence '?' %precedence ':' %left AND "And" OR "Or" %left LT '<' GT '>' LTE "<=" GTE ">=" EQU '=' NEQ "<>" SEQU "==" %left '&' %left '+' '-' %left '*' '/' %left '^' %left NOT "Not" %precedence INVERSION %precedence '.' /* WORKAROUND: Bison can't handle "sandwich" operators which surround the 2nd part of a binary expression */ %precedence '[' %precedence '(' %precedence GROUPING %type <expr> expression %type <expr_list> expression_list %{ int yylex(); void yyerror(const char *s); %} %% top: /* nothing */ | expression_list {print_expr($1.expression);} expression: BOOL {$$ = expr_from_prim(&(struct Primitive){.type = PRI_BOOLEAN, .boolean = $1});} | NUMBER {$$ = expr_from_prim(&(struct Primitive){.type = PRI_NUMBER, .number = $1});} | STRING {$$ = expr_from_str($1.str, $1.len);} | WORD {$$ = expr_from_ident($1.str, $1.len);} | MACRO {$$ = expr_from_ident($1.str, $1.len);} | VARIABLE {$$ = expr_from_ident($1.str, $1.len);} | expression '?' expression ':' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3, &$5}, 3, OP_CON);} | expression "And" expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_AND);} | expression "Or" expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_OR);} | expression '<' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_LT);} | expression '>' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_GT);} | expression '=' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_EQU);} | expression "<=" expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_LTE);} | expression ">=" expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_GTE);} | expression "<>" expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_NEQ);} | expression "==" expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_SEQU);} | expression '&' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_CAT);} | expression '+' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_ADD);} | expression '-' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_SUB);} | expression '*' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_MUL);} | expression '/' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_DIV);} | expression '^' expression {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_EXP);} | "Not" expression {$$ = expr_from_expr((struct Expression *[]){&$2}, 1, OP_NOT);} | '-' expression %prec INVERSION {$$ = expr_from_expr((struct Expression *[]){&$2}, 1, OP_INV);} /*| expression '.' WORD {$$ = expr_from_expr((struct Expression *[]){&$1, &(struct Expression){expr_from_ident($3.str, $3.len)}}, 2, OP_ACC);}*/ | expression '.' WORD { struct Expression ident_expr = expr_from_ident($3.str, $3.len); $$ = expr_from_expr((struct Expression *[]){&$1, &ident_expr}, 2, OP_ACC); } | expression '[' expression ']' {$$ = expr_from_expr((struct Expression *[]){&$1, &$3}, 2, OP_ACC);} | expression '(' expression_list ')' {$$ = expr_from_call(&$1, &$3);} | expression '(' ')' {$$ = expr_from_call(&$1, NULL);} /* | expression '(' expression_list ')' %prec CALL {$$ = expr_from_call(&$1, &$3);} | expression '(' ')' %prec CALL {$$ = expr_from_call(&$1, NULL);} */ | '(' expression ')' %prec GROUPING {$$ = $2;} expression_list: /* expression {$$ = (struct ExpressionList){.expression = , .list = NULL};} | expression ',' expression_list {$$ = (struct ExpressionList){.expression = &$1, .list = &$3};} */ expression {$$ = exprlist_from_expr(&$1, NULL);} /* | expression ',' expression_list {$$ = exprlist_from_expr(&$1, &$3);} | expression '\n' expression_list {$$ = exprlist_from_expr(&$1, &$3);} */ | expression_list ',' expression {$$ = exprlist_from_expr(&$3, &$1);} | expression_list '\n' expression {$$ = exprlist_from_expr(&$3, &$1);} %% #include "parser/parser.c" And the "parser output" by Bison:
      Terminals unused in grammar UNKNOWN WS NL COMMENT DIRECTIVE OPERATOR BRACKET DOT COMMA "Dim" "Local" "Global" "Enum" "Const" "Static" "ContinueCase" "ContinueLoop" "Default" "Null" "Do" "Until" "While" "WEnd" "For" "In" "To" "Step" "Next" "Exit" "ExitLoop" "Func" "Return" "EndFunc" "If" "Else" "ElseIf" "EndIf" "ReDim" "Select" "Switch" "Case" "EndSelect" "EndSwitch" AND OR LT GT LTE GTE EQU NEQ SEQU NOT Grammar 0 $accept: top $end 1 top: ε 2 | expression_list 3 expression: BOOL 4 | NUMBER 5 | STRING 6 | WORD 7 | MACRO 8 | VARIABLE 9 | expression '?' expression ':' expression 10 | expression "And" expression 11 | expression "Or" expression 12 | expression '<' expression 13 | expression '>' expression 14 | expression '=' expression 15 | expression "<=" expression 16 | expression ">=" expression 17 | expression "<>" expression 18 | expression "==" expression 19 | expression '&' expression 20 | expression '+' expression 21 | expression '-' expression 22 | expression '*' expression 23 | expression '/' expression 24 | expression '^' expression 25 | "Not" expression 26 | '-' expression 27 | expression '.' WORD 28 | expression '[' expression ']' 29 | expression '(' expression_list ')' 30 | expression '(' ')' 31 | '(' expression ')' 32 expression_list: expression 33 | expression_list ',' expression 34 | expression_list '\n' expression Terminals, with rules where they appear $end (0) 0 '\n' (10) 34 '&' (38) 19 '(' (40) 29 30 31 ')' (41) 29 30 31 '*' (42) 22 '+' (43) 20 ',' (44) 33 '-' (45) 21 26 '.' (46) 27 '/' (47) 23 ':' (58) 9 '<' (60) 12 '=' (61) 14 '>' (62) 13 '?' (63) 9 '[' (91) 28 ']' (93) 28 '^' (94) 24 error (256) UNKNOWN (258) WS (259) NL (260) COMMENT (261) DIRECTIVE (262) NUMBER <num> (263) 4 STRING <str> (264) 5 BOOL <boolean> (265) 3 WORD <str> (266) 6 27 MACRO <str> (267) 7 VARIABLE <str> (268) 8 OPERATOR (269) BRACKET (270) DOT (271) COMMA (272) "Dim" (273) "Local" (274) "Global" (275) "Enum" (276) "Const" (277) "Static" (278) "ContinueCase" (279) "ContinueLoop" (280) "Default" (281) "Null" (282) "Do" (283) "Until" (284) "While" (285) "WEnd" (286) "For" (287) "In" (288) "To" (289) "Step" (290) "Next" (291) "Exit" (292) "ExitLoop" (293) "Func" (294) "Return" (295) "EndFunc" (296) "If" (297) "Else" (298) "ElseIf" (299) "EndIf" (300) "ReDim" (301) "Select" (302) "Switch" (303) "Case" (304) "EndSelect" (305) "EndSwitch" (306) AND (307) "And" (308) 10 OR (309) "Or" (310) 11 LT (311) GT (312) LTE (313) "<=" (314) 15 GTE (315) ">=" (316) 16 EQU (317) NEQ (318) "<>" (319) 17 SEQU (320) "==" (321) 18 NOT (322) "Not" (323) 25 INVERSION (324) GROUPING (325) Nonterminals, with rules where they appear $accept (89) on left: 0 top (90) on left: 1 2 on right: 0 expression <expr> (91) on left: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 on right: 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 expression_list <expr_list> (92) on left: 32 33 34 on right: 2 29 33 34 State 0 0 $accept: • top $end NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 $default reduce using rule 1 (top) top go to state 10 expression go to state 11 expression_list go to state 12 State 1 4 expression: NUMBER • $default reduce using rule 4 (expression) State 2 5 expression: STRING • $default reduce using rule 5 (expression) State 3 3 expression: BOOL • $default reduce using rule 3 (expression) State 4 6 expression: WORD • $default reduce using rule 6 (expression) State 5 7 expression: MACRO • $default reduce using rule 7 (expression) State 6 8 expression: VARIABLE • $default reduce using rule 8 (expression) State 7 26 expression: '-' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 13 State 8 25 expression: "Not" • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 14 State 9 31 expression: '(' • expression ')' NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 15 State 10 0 $accept: top • $end $end shift, and go to state 16 State 11 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' 32 expression_list: expression • '?' shift, and go to state 17 "And" shift, and go to state 18 "Or" shift, and go to state 19 '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 32 (expression_list) State 12 2 top: expression_list • 33 expression_list: expression_list • ',' expression 34 | expression_list • '\n' expression '\n' shift, and go to state 36 ',' shift, and go to state 37 $default reduce using rule 2 (top) State 13 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 26 | '-' expression • 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 26 (expression) State 14 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 25 | "Not" expression • 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 25 (expression) State 15 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' 31 | '(' expression • ')' '?' shift, and go to state 17 "And" shift, and go to state 18 "Or" shift, and go to state 19 '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 ')' shift, and go to state 38 State 16 0 $accept: top $end • $default accept State 17 9 expression: expression '?' • expression ':' expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 39 State 18 10 expression: expression "And" • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 40 State 19 11 expression: expression "Or" • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 41 State 20 12 expression: expression '<' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 42 State 21 13 expression: expression '>' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 43 State 22 15 expression: expression "<=" • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 44 State 23 16 expression: expression ">=" • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 45 State 24 14 expression: expression '=' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 46 State 25 17 expression: expression "<>" • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 47 State 26 18 expression: expression "==" • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 48 State 27 19 expression: expression '&' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 49 State 28 20 expression: expression '+' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 50 State 29 21 expression: expression '-' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 51 State 30 22 expression: expression '*' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 52 State 31 23 expression: expression '/' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 53 State 32 24 expression: expression '^' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 54 State 33 27 expression: expression '.' • WORD WORD shift, and go to state 55 State 34 28 expression: expression '[' • expression ']' NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 56 State 35 29 expression: expression '(' • expression_list ')' 30 | expression '(' • ')' NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 ')' shift, and go to state 57 expression go to state 11 expression_list go to state 58 State 36 34 expression_list: expression_list '\n' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 59 State 37 33 expression_list: expression_list ',' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 60 State 38 31 expression: '(' expression ')' • $default reduce using rule 31 (expression) State 39 9 expression: expression • '?' expression ':' expression 9 | expression '?' expression • ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '?' shift, and go to state 17 ':' shift, and go to state 61 "And" shift, and go to state 18 "Or" shift, and go to state 19 '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 State 40 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 10 | expression "And" expression • 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 10 (expression) State 41 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 11 | expression "Or" expression • 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 11 (expression) State 42 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 12 | expression '<' expression • 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 12 (expression) State 43 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 13 | expression '>' expression • 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 13 (expression) State 44 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 15 | expression "<=" expression • 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 15 (expression) State 45 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 16 | expression ">=" expression • 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 16 (expression) State 46 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 14 | expression '=' expression • 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 14 (expression) State 47 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 17 | expression "<>" expression • 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 17 (expression) State 48 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 18 | expression "==" expression • 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 18 (expression) State 49 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 19 | expression '&' expression • 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 19 (expression) State 50 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 20 | expression '+' expression • 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 20 (expression) State 51 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 21 | expression '-' expression • 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 21 (expression) State 52 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 22 | expression '*' expression • 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 22 (expression) State 53 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 23 | expression '/' expression • 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 23 (expression) State 54 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 24 | expression '^' expression • 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 24 (expression) State 55 27 expression: expression '.' WORD • $default reduce using rule 27 (expression) State 56 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 28 | expression '[' expression • ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' '?' shift, and go to state 17 "And" shift, and go to state 18 "Or" shift, and go to state 19 '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 ']' shift, and go to state 62 State 57 30 expression: expression '(' ')' • $default reduce using rule 30 (expression) State 58 29 expression: expression '(' expression_list • ')' 33 expression_list: expression_list • ',' expression 34 | expression_list • '\n' expression '\n' shift, and go to state 36 ')' shift, and go to state 63 ',' shift, and go to state 37 State 59 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' 34 expression_list: expression_list '\n' expression • '?' shift, and go to state 17 "And" shift, and go to state 18 "Or" shift, and go to state 19 '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 34 (expression_list) State 60 9 expression: expression • '?' expression ':' expression 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' 33 expression_list: expression_list ',' expression • '?' shift, and go to state 17 "And" shift, and go to state 18 "Or" shift, and go to state 19 '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 33 (expression_list) State 61 9 expression: expression '?' expression ':' • expression NUMBER shift, and go to state 1 STRING shift, and go to state 2 BOOL shift, and go to state 3 WORD shift, and go to state 4 MACRO shift, and go to state 5 VARIABLE shift, and go to state 6 '-' shift, and go to state 7 "Not" shift, and go to state 8 '(' shift, and go to state 9 expression go to state 64 State 62 28 expression: expression '[' expression ']' • $default reduce using rule 28 (expression) State 63 29 expression: expression '(' expression_list ')' • $default reduce using rule 29 (expression) State 64 9 expression: expression • '?' expression ':' expression 9 | expression '?' expression ':' expression • 10 | expression • "And" expression 11 | expression • "Or" expression 12 | expression • '<' expression 13 | expression • '>' expression 14 | expression • '=' expression 15 | expression • "<=" expression 16 | expression • ">=" expression 17 | expression • "<>" expression 18 | expression • "==" expression 19 | expression • '&' expression 20 | expression • '+' expression 21 | expression • '-' expression 22 | expression • '*' expression 23 | expression • '/' expression 24 | expression • '^' expression 27 | expression • '.' WORD 28 | expression • '[' expression ']' 29 | expression • '(' expression_list ')' 30 | expression • '(' ')' "And" shift, and go to state 18 "Or" shift, and go to state 19 '<' shift, and go to state 20 '>' shift, and go to state 21 "<=" shift, and go to state 22 ">=" shift, and go to state 23 '=' shift, and go to state 24 "<>" shift, and go to state 25 "==" shift, and go to state 26 '&' shift, and go to state 27 '+' shift, and go to state 28 '-' shift, and go to state 29 '*' shift, and go to state 30 '/' shift, and go to state 31 '^' shift, and go to state 32 '.' shift, and go to state 33 '[' shift, and go to state 34 '(' shift, and go to state 35 $default reduce using rule 9 (expression) And finally a minimal reproduction of the issue I'm facing:
      TheDcoder@arch /m/d/P/C/E/build (master)> eci 1\n2 Starting parse Entering state 0 Stack now 0 Reading a token Next token is token NUMBER () Shifting token NUMBER () Entering state 1 Stack now 0 1 Reducing stack by rule 4 (line 130): $1 = token NUMBER () -> $$ = nterm expression () Entering state 11 Stack now 0 11 Reading a token Next token is token NL () Reducing stack by rule 32 (line 168): $1 = nterm expression () -> $$ = nterm expression_list () Entering state 12 Stack now 0 12 Next token is token NL () Reducing stack by rule 2 (line 126): $1 = nterm expression_list () { "op": "No Operation", "args": [ 1.0 ] } -> $$ = nterm top () Entering state 10 Stack now 0 10 Next token is token NL () 2: syntax error at Error: popping nterm top () Stack now 0 Cleanup: discarding lookahead token NL () Stack now 0 Now I will explain the issue:
      I am trying to parse several different expressions and construct an "expression list" from them, however my parser immediately reduces the first expression to the "top" rule, but what I want is for it to make an "expression_list" which combines the following expression which is separated by a NL.
      This fact can be observed in the debug output from the reproduction script parse attempt, after the parser enters state 12 it immediately uses rule 2 to reduce to "top", but what we want is for it to use rule 34 and reduce to another "expression_list".
      The reason why I think this happens is because the reduction to top simply consumes less tokens and satisfies the parser, and as far as I can tell there is no way to force Bison to be "greedy" when reducing an "expression_list".
      So I'm unsure how to proceed further, I think we have to change the parser but I do not know how. I tried some silly things (like making another "super_top" non-terminal etc.) but those don't compile and produce a ton of conflicts 😕
    • By t0nZ
      About logs, it is a few years that I drag a couple of functions between one script and another, so finally I decided to write down my first UDF to optimize my scripts.
      Main focus is to keep it simple, so you have just to include _gollog.au3 and call:
      GOLLOG("a line of text"), and start logging.
      If your script is without GUI the log will be only written to disk, if you have a GUI you can initialize an edit control :
      GOLLOG_INI($guititle, $left, $top, $width, $height)
      and GOLLOG() will write your log both in an auto generated EDIT control in your $guititle GUI and disk; also GOLLOG_INI() will AUTO-create a GUI (if it doesn't exist $guititle) with a screen log if you want !
      The majority of options (colors, fonts, position of logs ) are default-defined, but you can initialize them with GOLLOG_INI(), is all documented in the UDF and partially in the example.
      There is also a function:
      GOLzipLOG($n)
      to ZIP logs older than $n months, based on the UDF (also included in attachments) _zip.udf by @wraithdu
      the UDF code:
      #include-once #include <File.au3> #include <_zip.au3> ; #INDEX# ======================================================================================================================= ; Title .........: GOLLOG ; AutoIt Version : 3.3.16.0++ ; Language ......: English ; Description ...: Smart logging system ; Author(s) .....: NSC ; Last revision..: 20220503 ; =============================================================================================================================== ; ------------------------------------------------------------------------------ ; This software is provided 'as-is', without any express or ; implied warranty. In no event will the authors be held liable for any ; damages arising from the use of this software. ; #VARIABLES# =================================================================================================================== ; internal use Global $gollog_count = 0 ;total number of chars in editbox Global $gollog_lastlog = "sicrlf" ;carriage return default yes "sicrlf" or no onetime "nocrlf", see func GOLLOG Global $gollog_cachelog = "" ;to count number of chars on single line Global $Gollog_edit = "" ;name of edit control ; to initialize with func _GOLLOG_INI Global $gollog_guititle = "" ;name of gui for checkin' if activate on screen loggin' Global $geleft = 0 ;left coord edit box Global $getop = 0 ;top coord edit box Global $gewidth = 0 ;width of edit box Global $geheight = 0 ;height of edit box ; optionally to initialize with func _GOLLOG_INI, otherwise default values used Global $GEfontcolor = "0x00FF00" Global $GEbkcolor = "0x000000" Global $GEfont = "consolas" Global $GEfontsize = 8 Global $gefontweight = 800 Global $gollog_logpath = @ScriptDir & "\logs" Global $gollog_logfile = $gollog_logpath & "\" & StringTrimRight(@ScriptName, 4) & "_LOG_" ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ; GOLLOG_INI ; GOLLOG ; GOLzipLOG ; =============================================================================================================================== ; #INTERNAL_USE_ONLY#============================================================================================================ ; cleanedit ; =============================================================================================================================== #comments-start Changelog: ; V.2.31 2014-2015-2016-2018 only functions up to this version ; V.3.00 2018/07/30 first attempt to convert to UDF ; V.3.02 2018/08/03 bugfix in log folder creation ; V.3.03 2021/04/08 removed a undeclared variabile, caused a warning... $test = guicreate... ; V.3.10 2022/04/22 previously when the edit ctrl was full it was destroyed and recreated, now is only cleaned ; V.3.15 2022/05/03 rename and rationalization of global variables, minor bugfixes ideas to do don't repeat timestamps, at least on GUI , or highlight only time changes in line option to display also as balloon text one or more lines in line option to write only on screen and not on disk in line option to change font size / color only on one line search a way to determine when the guictrledit is "full" #comments-end ; #FUNCTION# ==================================================================================================================== ; Name...........: GOLLOG_INI ; Description ...: Initialize variables for GOLLOG edit, and creates the GOLLOG EDIT BOX ; if the Gui window is not existant ($gollog_guititle) also creates the windows gui; in this case, the parameters of ; coords and dimensions are used for the new gui window, but are coords and dimensions are inverted ; due to different parameters order in GUICreate and GUICtrlCreateEdit ; if not called gollog only write to disk with default setting (because $gollog_guititle = "") ; if called with &guititle = "", the edit box related variables are ignored but you can still define values for the log file ; Syntax.........: GOLLOG_INI ($gollog_guititle, $geleft, $getop, $gewidth, $geheight[, $gefontcolor [, $gebkcolor [, $gefont [, $gefontsize [, $gefontweight [, $gollog_logfile ]]]]] ) ; Parameters ....: $gollog_guititle - name of gui ; $geleft - left coord of the edit (for windows gui: width) ; $getop - top coord of the edit (for windows gui: height) ; $gewidth - width of the edit (for windows gui: left coord) ; $geheight - height of the edit (for windows gui: top coord) ; $gefontcolor - optional color of font in edit control ; $gebkcolor - optional color of background of edit control ; $gefont - optional font type ; $gefontsize - optional size of font ; $gefontweight - optional weight of font ; $gollog_logfile - optional complete path\name of the logfile (datetime will be still added to the name) ; otherwise default path\name will be used ; Return values .: Success - Returns "OK" ; Failure - error message, sets @error = 1 ; set @extended ; |1 - left cooord missing ; |2 - top coord missing ; |3 - widht missing ; |4 - height missing ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: GOLLOG ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func GOLLOG_INI($Fguititle, $Fgeleft, $Fgetop, $Fgewidth, $Fgeheight, $FGEfontcolor = "0x00FF00", $FGEbkcolor = "0x000000", $FGEfont = "consolas", $FGEfontsize = 8, $Fgefontweight = 800, $Flogfile = @ScriptDir & "\logs\" & StringTrimRight(@ScriptName, 4) & "_LOG_") $gollog_guititle = $Fguititle $geleft = $Fgeleft $getop = $Fgetop $gewidth = $Fgewidth $geheight = $Fgeheight ; optionally to initialize with func _GOLLOG_INI, otherwise default values used $GEfontcolor = $FGEfontcolor $GEbkcolor = $FGEbkcolor $GEfont = $FGEfont $GEfontsize = $FGEfontsize $gefontweight = $Fgefontweight $gollog_logfile = $Flogfile If $gollog_guititle = "" Then Return "paramter GUI title missing" EndIf If $geleft = "" Then Return SetError(1, 1, "edit: left cooord missing") If $getop = "" Then Return SetError(1, 2, "edit: top coord missing") If $gewidth = "" Then Return SetError(1, 3, "edit: widht missing") If $geheight = "" Then Return SetError(1, 4, "edit: height missing") If Not WinExists($gollog_guititle) Then If $geleft = "" Then Return SetError(1, 1, "GUI: width missing") If $getop = "" Then Return SetError(1, 2, "GUI: heigh missing") If $gewidth = "" Then Return SetError(1, 3, "GUI: left cooord missing") If $geheight = "" Then Return SetError(1, 4, "GUI: top coord missing") GUICreate($gollog_guititle, $geleft, $getop, $gewidth, $geheight) ; removed $test = ; modify parameters to fit edit in "auto" generated GUI $gewidth = $geleft - 10 $geheight = $getop - 10 $getop = 5 $geleft = 5 cleanedit() GUISetState(@SW_SHOW) Else If $geleft = "" Then Return SetError(1, 1, "left cooord missing") If $getop = "" Then Return SetError(1, 2, "top coord missing") If $gewidth = "" Then Return SetError(1, 3, "widht missing") If $geheight = "" Then Return SetError(1, 4, "height missing") cleanedit() EndIf Return "OK" EndFunc ;==>GOLLOG_INI ; #FUNCTION# ==================================================================================================================== ; Name...........: GOLLOG ; Description ...: writes one line of log ; if there isn't edit control, the line is only written on the log file ; if there is also an associated edit control, it writes both on screen and on file ; Syntax.........: GOLLOG(ByRef $logtext) ; Parameters ....: $logtext - a string of text to be written down on disk and on screen ; if $logtext containg at the end a substring like "|nocrlf50" that line does not CR ("noCRLF") ; except if the max specified number of chars on the line ("50") is excedeed ; next call of Gollog() without substring "|nocrlf50" restores auto Carriage Return behaviour ; Return values .: n/a ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: GOLLOG_INI,cleanedit ; Link ..........: ; Example .......: no ; =============================================================================================================================== Func GOLLOG($logtext) If Not FileExists($gollog_logpath) Then DirCreate($gollog_logpath) ; pre-UDF this was in the scripts EndIf $gollog_count += StringLen($logtext) Local $gollog_logfiletimerange = @YEAR & @MON Local $linelimit = StringRight($logtext, 2) If StringRight($logtext, 9) = "|nocrlf" & $linelimit Then $logtext = StringTrimRight($logtext, 9) Local $acapo = "no" Else Local $acapo = "si" $gollog_count += 4 If $gollog_count > 10000 And $gollog_guititle <> "" Then ;Sleep(3000) cleanedit() ; MsgBox(64, "debug", $conta) $gollog_count = 0 EndIf EndIf If $acapo = "no" And (StringLen($gollog_cachelog) <= $linelimit) Then ;pearl perla no CRLF if > linelimt If $gollog_lastlog = "nocrlf" Then If WinExists($gollog_guititle) Then ; no GUI so no on screen log GUICtrlSetData($gollog_edit, $logtext, 1) EndIf Else If WinExists($gollog_guititle) Then ; no GUI no on screen log GUICtrlSetData($gollog_edit, @MDAY & "/" & @MON & "_" & @HOUR & ":" & @MIN & " " & $logtext, 1) EndIf EndIf $gollog_cachelog = $gollog_cachelog & $logtext $gollog_lastlog = "nocrlf" Else If $gollog_lastlog = "nocrlf" Then If WinExists($gollog_guititle) Then ; no GUI no on screen log GUICtrlSetData($gollog_edit, $logtext & @CRLF, 1) EndIf $gollog_cachelog = $gollog_cachelog & $logtext _FileWriteLog($gollog_logfile & $gollog_logfiletimerange & ".txt", $gollog_cachelog) $gollog_cachelog = "" Else If WinExists($gollog_guititle) Then ; no GUI no on screen log GUICtrlSetData($gollog_edit, @MDAY & "/" & @MON & "_" & @HOUR & ":" & @MIN & " " & $logtext & @CRLF, 1) EndIf _FileWriteLog($gollog_logfile & $gollog_logfiletimerange & ".txt", $logtext) EndIf $gollog_lastlog = "sicrlf" EndIf EndFunc ;==>GOLLOG ; #FUNCTION# ==================================================================================================================== ; Name...........: GOLzipLOG ; Description ...: takes all log files older than specified number of months, and zip these in a unique zip file, in the same folder ; Syntax.........: GOLLOG(ByRef $months2notZIP) ; Parameters ....: $months2notZIP - number of months (age of log files) to not zip ; Return values .: n/a ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: no ; =============================================================================================================================== Func GOLzipLOG($months2NOTzip) ; zipping old log leaving unzipped only n months GOLLOG("ZIPping log files older than " & $months2NOTzip & " months") Local $hSearch = FileFindFirstFile($gollog_logfile & "*.txt") ; searching for logs Local $logconta = 0 Local $gollog_logfiletimerange = @YEAR & @MON While 1 ; single file processing cycle Local $sFileName = FileFindNextFile($hSearch) ; If there is no more file matching the search. If @error Then ExitLoop Local $stringtime = StringTrimRight(StringRight($sFileName, 10), 4) ;obtaining year-month like 201609 If $gollog_logfiletimerange - $stringtime > $months2NOTzip Then ;zipping If Not FileExists($gollog_logfile & ".zip") Then If Not _Zip_Create($gollog_logfile & ".zip", 1) Then GOLLOG("ERROR " & @error & " creating " & $gollog_logfile & ".zip") Else GOLLOG("Created new log archive: " & $gollog_logfile & ".zip") EndIf Else GOLLOG("adding to archive: " & $gollog_logfile & ".zip") EndIf If Not _zip_additem($gollog_logfile & ".zip", $gollog_logpath & $sFileName) Then GOLLOG("ERROR " & @error & " zipping: " & $gollog_logpath & $sFileName) Else GOLLOG("Added: " & $gollog_logpath & $sFileName) $logconta += 1 If Not FileDelete($gollog_logpath & $sFileName) Then GOLLOG("ERROR - Unable to DELETE log file " & $gollog_logpath & "\" & $sFileName) EndIf EndIf EndIf WEnd GOLLOG("Finished = " & $logconta & " log files zipped") EndFunc ;==>GOLzipLOG ; #INTERNAL_USE_ONLY#============================================================================================================ ; Name...........: cleanedit ; Description ...: create the edit box delete edit box and recreate it with same parameters ; when the edit box is "full" of chars delete edit box and recreate it with same parameters ; parameters are global variables specified in GOLLOG_INI ; Syntax.........: cleanedit() ; Parameters ....: n/a ; Return values .: n/a ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: GOLLOG_INI ; Link ..........: ; Example .......: no ; =============================================================================================================================== #cs Func cleanedit() ; cleaning of edit every n° lines (in program put if $nlines > xlines then this function) GUICtrlDelete($gollog_edit) $gollog_edit = GUICtrlCreateEdit("", $geleft, $getop, $gewidth, $geheight) ;, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_BORDER)) GUICtrlSetData(-1, "" & @CRLF) GUICtrlSetFont(-1, $GEfontsize, $gefontweight, 0, $GEfont) GUICtrlSetColor(-1, $GEfontcolor) GUICtrlSetBkColor(-1, $GEbkcolor) GUICtrlSetCursor(-1, 3) EndFunc ;==>cleanedit #ce Func cleanedit() ; cleaning of edit every n° lines (in program put if $nlines > xlines then this function) If GUICtrlGetHandle($gollog_edit) = 0 Then $gollog_edit = GUICtrlCreateEdit("", $geleft, $getop, $gewidth, $geheight) ;, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_BORDER)) GUICtrlSetData(-1, "" & @CRLF) GUICtrlSetFont(-1, $GEfontsize, $gefontweight, 0, $GEfont) GUICtrlSetColor(-1, $GEfontcolor) GUICtrlSetBkColor(-1, $GEbkcolor) GUICtrlSetCursor(-1, 3) Else GUICtrlSetData($gollog_edit, "") EndIf EndFunc ;==>cleanedit the example code:
      ; *** GOLLOG UDF test script *** ;~ ; (C) NSC 2018-2022 #include <_GOLLOG.au3> MsgBox(64, "GOLLOG example 1", "no GUI, only write on disk, check the log file in @scriptdir" & @CR & "note: no initialization GOLLOG_INI() is required!") Gollog("this is the first line of log only in the file") MsgBox(64, "GOLLOG example 2", "log and edit on pre-existant GUI") $mygui = "edit on existant gui" GUICreate($mygui, 600, 300, 300, 300) GUISetState(@SW_SHOW) gollog_ini($mygui, 5, 5, 590, 290) ;basic initialization, no aestetic options Gollog("this is the first line |nocrlf50") ; no carriage return with -> |nocrlf50 Gollog("on the pre-existant GUI") ; auto CR restored sleep(1000) $a = 0 While $a < 50 GOLLOG("Example 2 line:" & $a) $a += 1 Sleep(90) WEnd GUIDelete($mygui) MsgBox(64, "GOLLOG example 3", "log and edit on 'auto' generated GUI") $mygui = "auto generated GUI" gollog_ini($mygui, 600, 300, 200, 200, "0x0033cc", "0xffff00", "courier") ; initialization with colors and font choice, more options see the UDF Gollog("this is the first line |nocrlf50") Gollog("on the 'auto' generated GUI") sleep(1000) $a = 0 While $a < 50 GOLLOG("Example 3 line:" & $a) $a += 1 Sleep(70) WEnd MsgBox(64, "GOLLOG example 4", "auto re-creation of edit") ; recreate edit before it is "full" Gollog("to recreation of edit control") sleep(1500) While $a < 2500 GOLLOG("Example 4 line:" & $a ) $a += 1 WEnd Greetings to all of you.
       
       
       
       
       
       
       
      gollog.zip
    • By MarkBuchanan
      Hello,

      I am new to AutoIt so please bare with me. I am trying to write a script that installs a certain program on Win 10 and then based on a successful install create a file in a specific directory. Below is my install script which works, just not quite sure how to get it to write the file when its done. My thought is to add a "If FileExists" command at the end to make sure that the files are in the install folder and based on that write the file just not sure how to accomplish it. I hope that makes sense and thank you in advance for any help. 
       
      Local $Title="MobilePass Install"
      Local $FilePATH="\\XXXXXXX\XXXXXX"
      Local $UserName "*****8"
      Local $Password = "*******8"   ;Check if Application location already exists
      If FileExists ("C:\Program Files\WindowsApps\05EB1CFA.SafeNetMobilePASS_1.8.3.0_x64__bnm8hg3x9na9j") Then
      Exit
      Else
      Local $pid = RunAsWait ($UserName, $ComputerDomainName, $Password, 1, "MobilePASS+Setup_1.8.3.0_signed.exe", "", @SW_HIDE )
      Endif
       
    • By Colduction
      Hi again guys!, i had COVID-19 for twice and i couldn't check the forum since 3 or 4 months ago till now! i hope you will get better if you're fighting for beat COVID-19

      I have two question, first is about extracting all of the IP Address from an IP Ranges, for e.g: 192.168.1.1-192.255.255.255 (Start and End are variable and will be defined by the user) and for second one, i have a friend that he is Python programmer, he made a IP Parser that it can support large txt files (1TB) and it can parse all of them under 10min and it also supports low-end PCs that have 1 GB RAM!

      The list that his program parses are:
      #1765497 192.168.1.1 8082 #1765496 192.168.1.1 8084 #1965493 192.168.1.1 8089 #9565495 192.168.1.1 8086 #2565492 192.168.1.1 8081 and it converts very very fast to this:
      192.168.1.1:8082 192.168.1.1:8084 192.168.1.1:8089 192.168.1.1:8086 192.168.1.1:8081 I wonder how to do this via AutoIt, if you can help me in this way, i will be happy✌❤

      Thanks for your helps.

      FIRST_QUESTION_TEST.au3
    • By TheDcoder
      See this thread for info:
×
×
  • Create New...